Veröffentlicht 28. Januar 200322 j 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???
28. Januar 200322 j 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"); }
28. Januar 200322 j 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
28. Januar 200322 j @Nebutheb: Dein Code funktioniert bei mir. Was klappt denn nicht? Schlägt _popen fehl?
29. Januar 200322 j _popen liefert bei mir immer NULL zurück. Kann keine Pipe erzeugen und weiss einfach nicht warum. werde dranbleiben...
29. Januar 200322 j Was für eine Art von Programm erstellst du? _popen funktioniert AFAIK nur bei Konsolenanwendungen.
29. Januar 200322 j Ich programmiere eine grafische Oberfläche für ein bestehendes Programm, welches ich ansteuern möchte. Das Programm ist eine Konsolenanwendung...
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.