我试图将变量的原始字节发送到某个文件描述符(在本例中为套接字)。
所以,让我说我有:
size_t number = 3;
write(some_fd, number, sizeof(size_t));
那么将变量数字的sizeof(size_t)
个字节写入文件描述符 some_fd 吗?
我目前无法对此进行测试,所以只是想要确认。
答案 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;如果是 在写入至少一个字节后中断,通话 成功,并返回写入的字节数。