C fwrite a pid\t不工作
我有以下代码:C fwrite a pid\t不工作,c,fwrite,C,Fwrite,我有以下代码: ... printf("Started %d", pid); FILE * fh; fh = fopen("run/source.pid", "wb"); fwrite(&pid, sizeof(int), 1, fh); fclose(fh); 然而,编写的pid文件编写的是行话,而不是整数,虽然pid\u t只是一个int,但我甚至将执行sizeof(pid\u t)与第二个参数联系起来,我得到了类似的问题 有什么想法吗?提前谢谢你的帮助 谢谢我不太理解这个问题(上
...
printf("Started %d", pid);
FILE * fh;
fh = fopen("run/source.pid", "wb");
fwrite(&pid, sizeof(int), 1, fh);
fclose(fh);
然而,编写的pid文件编写的是行话,而不是整数,虽然pid\u t只是一个int
,但我甚至将执行sizeof(pid\u t)
与第二个参数联系起来,我得到了类似的问题
有什么想法吗?提前谢谢你的帮助
谢谢我不太理解这个问题(上下文太少),但问题可能是您正在文本编辑器、终端等中看到该文件 fwrite()写入原始数据,例如,假设您有一个pid编号,比如说12,然后使用fwrite编写该编号,如下所示:
fwrite(&pid, sizeof(int), 1, file);
fwrite()会将一个32位整数写入文件文件
,也就是说,根据处理器类型,字节序列如下:0012
然而
fprintf()将写入在所有终端或文本编辑器中可见的字节序列:49 50
(ASCII字符与平台无关)
希望这有帮助。POSIX说:
blksize\u t
、pid\u t
和ssize\u t
应该是有符号整数类型。您是否尝试过使用fprintf(fh,“%d”,pid)
而不是fwrite()
只是为了看看会发生什么。这样做有效,但我仍然无法理解为什么fwrite不起作用。我发布了一个答案供您查看,希望我的答案足够清晰,没有打字错误。除息的