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

我正在尝试将变量的原始字节发送到某个文件描述符(在这种情况下是一个套接字)。

所以我要说:

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

那么将变量numbersizeof(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; 如果在写入至少一个字节后中断,则调用成功,并返回写入的字节数。