【发布时间】:2015-08-29 02:56:38
【问题描述】:
我使用的是 Linux (3.13.0-24-generic #46-Ubuntu),并写了一个简单的 C 程序
关于pid。
编译时遇到一些问题:
-
gcc pid_test.c,这很好。 -
gcc -std=c99 pid_test.c或gcc -std=c11 pid_test.c,给出错误:
错误:未知类型名称“pid_t”
pid_test.c:
// getpid() & getppid() test
#include <stdio.h>
#include <unistd.h>
int pid_test() {
pid_t pid, ppid;
pid = getpid();
ppid = getppid();
printf("pid: %d, ppid: %d\n", pid, ppid);
return 0;
}
int main(int argc, void *argv[]) {
pid_test();
return 0;
}
我用谷歌搜索过;人们似乎在 Windows 上有类似的问题,但我使用的是 Linux。 c99 或 c11 是否删除 pid_t 或移动到其他标题?或者……
【问题讨论】:
-
请注意,
pid_t不是标准的 C 数据类型,因此除非您以某种方式启用额外类型,否则它们将不可见。启用它们的一种方法是使用-std=gnu99(或-std=gnu11);另一种是指定要使用的 POSIX 或 X/Open 版本。我通常使用#define _XOPEN_SOURCE 800(或 700 或 600,具体取决于平台 - POSIX 参见 the compilation environment。