POSIX 的论点write()
是:
#include <unistd.h>
ssize_t write(int fildes, const void *buf, size_t nbyte);
那是一个:
您传递了两种尺寸,而不是地址和尺寸。
利用:
rtn = write(data, PATHA, sizeof(PATHA)-1);
或者:
rtn = write(data, PATHA, strlen(PATHA));
如果您正在寻求将字符串的大小写为int
,那么您需要一个int
变量来传递给write()
,如下所示:
int len = strlen(PATHA);
rtn = write(data, &len, sizeof(len));
请注意,您不能只使用size_t
变量,除非您想编写size_t
; 特别是在 64 位 Unix 系统上,sizeof(size_t) != sizeof(int)
通常情况下,您需要确定要写入的大小。
您还需要注意,一些系统是小端的,而另一些是大端的,并且您在一种类型上使用这种机制编写的内容在另一种类型上是不可读的(在 I/O 之前或之后没有完成映射工作)操作)。您可能会选择忽略这个问题,或者您可能决定使用可移植格式(通常称为“网络顺序”,相当于大端),或者您可能决定定义您的代码使用相反的格式命令。如果您小心的话,您可以编写代码以便在所有平台上使用相同的逻辑(并且所有平台都会得到相同的答案)。