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