errno ought to be a positive integer, not -1; write returns -1 and sets errno to a positive int which describes the error; it should be one of:
EAGAIN Non-blocking I/O has been selected using O_NONBLOCK and the write would block.
EBADF fd is not a valid file descriptor or is not open for writing.
EFAULT buf is outside your accessible address space.
EFBIG An attempt was made to write a file that exceeds the implementation-defined maximum file size or the process' file size limit, or to write at a position past the maximum allowed offset.
EINTR The call was interrupted by a signal before any data was written.
EINVAL fd is attached to an object which is unsuitable for writing; or the file was opened with the O_DIRECT flag, and either the address specified in buf, the value specified in count, or the current
file offset is not suitably aligned.
EIO A low-level I/O error occurred while modifying the inode.
ENOSPC The device containing the file referred to by fd has no room for the data.
EPIPE fd is connected to a pipe or socket whose reading end is closed. When this happens the writing process will also receive a SIGPIPE signal. (Thus, the write return value is seen only if the pro-
gram catches, blocks or ignores this signal.)
Other errors may occur, depending on the object connected to fd.
On Jan 4, 2007, at 5:46 PM, Mayur Shah wrote:
We get back a -1
On 1/3/07, Craig Hughes <email@example.com> wrote:
On Jan 2, 2007, at 12:39 PM, Mayur Shah wrote:
I have a C program that tries to write to the serial port on the gumstix device. I get a return value of -1 when I try to write to the serial port using this command,
write(sportfd, &char_reg, sizeof(char_reg)
Not sure why I am not able to write even a single byte of data.
Upon successful completion the number of bytes which were written is
returned. Otherwise a -1 is returned and the global variable errno is
set to indicate the error.
So.... what is errno set to after write() returns -1?