使用write()将变量的字节写入文件描述符?

时间:2017-12-10 07:44:21

标签: c

我试图将变量的原始字节发送到某个文件描述符(在本例中为套接字)。

所以,让我说我有:

size_t number = 3;
write(some_fd, number, sizeof(size_t));

那么将变量数字sizeof(size_t)个字节写入文件描述符 some_fd 吗?

我目前无法对此进行测试,所以只是想要确认。

2 个答案:

答案 0 :(得分:4)

  

那么将变量编号的sizeof(size_t)个字节写入文件描述符 some_fd 吗?

不,它不会。

请记住write声明为:

ssize_t write(int fildes, const void *buf, size_t nbyte);

您需要使用:

write(some_fd, &number, sizeof(size_t));
//             ^^^

必须使用&才能从number使用的地址中写出number的值。

答案 1 :(得分:0)

write期望缓冲区的地址具有需要写入的数据。因此,您需要在您的案例中传递号码地址。

write可以被打断。您需要检查写入的返回值,以了解是否成功写入了预期的字节数。以下是写手册页中的行:

  

例如,如果写入的字节数可能小于计数   底层物理介质上没有足够的空间   写入较少后,调用被信号处理程序中断   比计数字节。

     

如果write()在任何字节之前被信号处理程序中断   写入,然后调用失败,错误EINTR;如果是   在写入至少一个字节后中断,通话   成功,并返回写入的字节数。