使用write()将变量的字节写入文件描述符?
我正在尝试将变量的原始字节发送到某个文件描述符(在这种情况下是一个套接字)。
所以我要说:
size_t number = 3; write(some_fd, number, sizeof(size_t));
那么将变量number的sizeof(size_t)
字节写入文件描述符some_fd会是什么意思 ?
我目前无法对此进行测试,所以只是想确认一下。
那么将变量number的
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
使用的地址写入数字的值。
write期望缓冲区的地址,该缓冲区具有需要写入的数据。 因此,您需要在您的案例中传递号码地址。
write
可以被打断。 您需要检查写入的返回值,以了解是否成功写入了预期的字节数。 以下是写手册页中的行:
例如,如果底层物理介质上没有足够的空间,或者在写入少于count个字节后调用被信号处理程序中断,则写入的字节数可能小于count。
如果在写入任何字节之前,write()被信号处理程序中断,则调用将失败并显示错误EINTR; 如果在写入至少一个字节后中断,则调用成功,并返回写入的字节数。