2015-12-11 41 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'的時候纔有效。可能更安全地施放它。 –