c99 - Fehler: unknown type name 'pid_t'
Ich bin mit Linux (3.13.0-24-generic #46-Ubuntu), und schrieb ein einfaches C-Programm
über pid
.
Beim kompilieren, bekam ich ein Problem:
gcc pid_test.c
ist dies in Ordnung.gcc -std=c99 pid_test.c
odergcc -std=c11 pid_test.c
gibt Fehler:
Fehler: unknown type name '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;
}
Habe ich die Suche mit Google; die Menschen scheinen ähnliches Problem unter Windows, aber ich bin mit Linux. Tut c99
oder c11
entfernen pid_t
oder verschieben, um andere header? Oder...
Beachten Sie, dass
pid_t
ist kein standard C Datentyp, es sei denn, Sie aktivieren die zusätzlichen Typen irgendwie, Sie werden nicht sichtbar. Ein Weg, um Ihnen zu ermöglichen, ist die Verwendung -std=gnu99
(oder -std=gnu11
); ein weiteres ist die Angabe eines POSIX oder X/Open-version zu verwenden. Normalerweise verwende ich #define _XOPEN_SOURCE 800
(oder 700 oder 600, je nach Plattform — siehe die Zusammenstellung Umgebung für POSIX.InformationsquelleAutor Eric Wang | 2015-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende Werke für mich
Fand ich es hier
#include <sys/types.h>
macht es Arbeit. So scheint es richtig, immer hinzufügen, dass der header bei der Verwendungpid_t
um Kompatibilität in der Zukunft ...InformationsquelleAutor Guru Prasad
In älteren Posix-standards
pid_t
wurde lediglich definiert, in<sys/types.h>
, aber da Posix.1-2001 (Frage 7) ist es auch in<unistd.h>
. Jedoch, um Definitionen, die in Posix.1-2001, müssen Sie definieren, eine entsprechende feature-test-makro vor einschließlich standard-header-Datei.Also eine der beiden folgenden Sequenzen:
oder
InformationsquelleAutor rici