Dies ist ein kleiner Ausschnitt meines Codes.
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
...
FILE * pipe;
...
pipe = popen ("ls /tmp -1", "r");
...
pclose(pipe);
blarg.c:106: warning: implicit declaration of function ‘popen’
blarg.c:106: warning: assignment makes pointer from integer without a cast
blarg.c:112: warning: implicit declaration of function ‘pclose’
blarg.c:118: warning: assignment makes pointer from integer without a cast
Ich bin mir wirklich unsicher. Ich habe nach Popen gesucht und alles, was es benötigt, ist stdio.h, das bereitgestellt wird. Was fehlt oder ist das Problem im Rest meines Codes (ich möchte nicht wirklich mehr Code zeigen, weil es eine Zuweisung ist).
Vielleicht kompilieren Sie mit Optionen zu GCC wie z
-ansi
oder-std=c99
; diese verhindern, dass die POSIX-Erweiterungen sichtbar sind. Um sie sichtbar zu machen, müssen Sie sie anfordern, indem Sie (zum Beispiel) angeben#define _XOPEN_SOURCE 500
(oder 600 oder 700), bevor Sie einen Systemheader einfügen.– Jonathan Leffler
29. März 2011 um 6:59 Uhr
schöner verwandter Beitrag:
– Ciro Santilli Путлер Капут 六四事
22. Februar 2013 um 15:41 Uhr