0

我有以下代码:

...
printf("Started %d", pid);
FILE * fh;
fh = fopen("run/source.pid", "wb");
fwrite(&pid, sizeof(int), 1, fh);
fclose(fh);

然而,写的 pid 文件写的是行话,而不是整数,虽然 pid_t 只是一个,但我什至为第二个参数int做绑定,但我遇到了类似的问题。sizeof(pid_t)

有任何想法吗?我在这里先向您的帮助表示感谢。

谢谢

4

1 回答 1

1

好吧,我不太了解这个问题(上下文太少),但问题可能是您在文本编辑器、终端等中看到该文件。

fwrite() 写入原始数据,例如,假设您有一个 pid 编号,比如说 12,然后您使用 fwrite 写入该编号,如下所示:

fwrite(&pid, sizeof(int), 1, file);

fwrite() 会将一个 32 位整数写入文件file,也就是说,根据您的处理器类型,一个字节序列如下所示:00 00 00 12

然而

fprintf() 将写入一个字节序列:49 50(ASCII 字符平台无关)在所有终端或文本编辑器中可见。

希望这可以帮助。

于 2012-10-26T22:27:58.497 回答