c - fwrite a pid_t 不工作

标签 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)作为第二个参数我也遇到类似的问题。

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

谢谢

最佳答案

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

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

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

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

但是

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

希望这有帮助。

关于c - fwrite a pid_t 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13094897/

相关文章:

php - 使用 PHP 创建文本文件?

Objective-C 调用 C 函数 - 链接器命令失败,退出代码为 1

c - 在 C 字符串初始化中包含 {} 是否重要?

c - char * 赋值的段错误

c - strtoull在C中正确使用

c - 从一个缓冲区转换和复制到另一个缓冲区时堆栈粉碎

c - 如何将二进制文件中的结构写入另一个二进制文件中的嵌套结构?

复制音频文件,指针问题

c++ - 平衡文件空间、内存访问和写入速度以将结构数组写入文件

C++ 文本文件不会保存在 Unicode 中,它一直保存在 ANSI 中