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).