fwrite pid_t不起作用

时间:2012-10-26 21:47:58

标签: c fwrite

我有以下代码:

...
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)我得到了类似的问题。

有什么想法吗?感谢您的帮助。

由于

1 个答案:

答案 0 :(得分:1)

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

fwrite()写入原始数据,例如,假设你有一个pid编号,比方说12,你用这样的fwrite写这个数字:

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

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

然而

fprintf()将在所有终端或文本编辑器中编写一个字节序列:49 50(独立于ASCII字符平台)。

希望这有帮助。