Zum Inhalt springen

_popen, offnen einer Pipe und schreiben in die Standardeingabe


Empfohlene Beiträge

Geschrieben

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???

Geschrieben

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");

}

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...