A generic device has to be opened for read and write access:
        int fd = open (device_name, O_RDWR);
(This is the case even for a read-only hardware device such as a cdrom drive).
We have to perform a write to send the command and a read
to get back any results. In the case of an error the return code is
negative (see section 
sec-errorhandling
 for a complete list).