Nebutheb Geschrieben 28. Januar 2003 Geschrieben 28. Januar 2003 Hallo Leutz :-)) kriege es nicht hin diese Pipe aufzubauen. Wenn ich nur ein Dir Befehl durch die Pipe schicken möchte und mich an die vorgegebene Syntax halte, baut er nicht einmal die Pipe auf um das Dir durchzusenden. Muss irgendwas falsch machen, vielleicht was übersehen. Wer kann mir helfen??? Zitieren
return FALSE Geschrieben 28. Januar 2003 Geschrieben 28. Januar 2003 Poste mal deinen Code, dann werden Sie geholfen Zitieren
Nebutheb Geschrieben 28. Januar 2003 Autor Geschrieben 28. Januar 2003 Code posten, ok :cool: , hab das Beispiel aus der Borland Hilfe übernommen FILE* handle; // Behandelt das eine Ende der pipe char message[256]; // Puffer für Text, der durch die Pipe geschickt wird int status; // Funktionsrückgabewert handle = _popen("dir /b", "wt"); if (handle == NULL) { perror("_popen error"); exit(0); } // Liest und leitet die Eingabe weiter, die vom untergeordneten Prozeß empfangen wurde while (fgets(message, sizeof(message), handle)) { fprintf(stdout, message); } // Schließt die Pipe und prüft den Status für die Rückgabe status = _pclose(handle); if (status == -1) { perror("_pclose error"); } Zitieren
Nebutheb Geschrieben 28. Januar 2003 Autor Geschrieben 28. Januar 2003 handle = _popen("dir /b", "rt"); Zitieren
Guybrush Threepwood Geschrieben 28. Januar 2003 Geschrieben 28. Januar 2003 Hi, also folgendes Beispiel aus der MSDN Library funktioniert: #include <stdio.h> #include <stdlib.h> void main( void ) { char psBuffer[128]; FILE *chkdsk; /* Run DIR so that it writes its output to a pipe. Open this * pipe with read text attribute so that we can read it * like a text file. */ if( (chkdsk = _popen( "dir *.c /on /p", "rt" )) == NULL ) exit( 1 ); /* Read pipe until end of file. End of file indicates that * CHKDSK closed its standard out (probably meaning it * terminated). */ while( !feof( chkdsk ) ) { if( fgets( psBuffer, 128, chkdsk ) != NULL ) printf( psBuffer ); } /* Close pipe and print return value of CHKDSK. */ printf( "\nProcess returned %d\n", _pclose( chkdsk ) ); } [/PHP] EDIT: handle = _popen("dir /b", "rt"); Dein Beispiel läuft bei mir übrigens auch egal ob "rt", oder "wt". Es muß also an etwas anderem liegen. Gruß Guybrush Zitieren
Nebutheb Geschrieben 28. Januar 2003 Autor Geschrieben 28. Januar 2003 OK, das bringt mich zwar nicht direkt weiter, aber erstmal danke guybrush... Zitieren
Klotzkopp Geschrieben 28. Januar 2003 Geschrieben 28. Januar 2003 @Nebutheb: Dein Code funktioniert bei mir. Was klappt denn nicht? Schlägt _popen fehl? Zitieren
Nebutheb Geschrieben 29. Januar 2003 Autor Geschrieben 29. Januar 2003 _popen liefert bei mir immer NULL zurück. Kann keine Pipe erzeugen und weiss einfach nicht warum. werde dranbleiben... Zitieren
Klotzkopp Geschrieben 29. Januar 2003 Geschrieben 29. Januar 2003 Was für eine Art von Programm erstellst du? _popen funktioniert AFAIK nur bei Konsolenanwendungen. Zitieren
Nebutheb Geschrieben 29. Januar 2003 Autor Geschrieben 29. Januar 2003 Ich programmiere eine grafische Oberfläche für ein bestehendes Programm, welches ich ansteuern möchte. Das Programm ist eine Konsolenanwendung... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.