2015-12-11 49 views
1

以下代码:Ç - 写()系统调用打印乱码代替将为pid_t

#include <stdio.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main() 
{ 
    pid_t mypid = getpid(); 
    write(1, &mypid, sizeof(pid_t)); 
    return 0; 
} 

打印乱码而不是实际PID。为什么?

+4

因为你不发送文本'stdout'。 'write'是一个二进制输出函数。试试'printf()'。 –

回答

5

write(..不会打印格式化文本,而是直接将二进制输出输出到文件描述符。

只需使用printffprintf

fprintf(stdout, "%d", (int) mypid); 
+3

顺便说一句,'fprintf'只有在'pid_t'实际上是'signed int'的时候才有效。可能更安全地施放它。 –