_popen, _wpopen
Erstellt eine Pipe und führt einen Befehl aus.
Wichtig
Diese API kann nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden.Weitere Informationen finden Sie unter CRT-Funktionen nicht mit /ZW unterstützt.
FILE *_popen(
const char *command,
const char *mode
);
FILE *_wpopen(
const wchar_t *command,
const wchar_t *mode
);
Parameter
command
Befehl, der ausgeführt werden soll.mode
Modus des zurückgegebenen Streams.
Rückgabewert
Gibt einen Stream zurück, der einem Ende der erstellten Pipe zugeordnet ist. Das andere Ende der Pipe ist der Standardeingabe oder Standardausgabe des erzeugten Befehls zugeordnet. Die Funktionen geben bei einem Fehler NULL zurück. Wenn der Fehler ein ungültiger Parameter ist, etwa wenn command oder mode ein NULL-Zeiger ist, oder mode kein gültiger Modus ist, wird errno auf EINVAL festgelegt. Gültige Modi können Sie dem Abschnitt mit den Hinweisen entnehmen.
Weitere Informationen über diese und andere Fehlercodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.
Hinweise
Die _popen-Funktion erstellt eine Pipe und führt asynchron eine generierte Kopie des Befehlsprozessors mit der angegebenen Zeichenfolge command aus. Die Zeichenfolge mode gibt den angeforderten Zugriffstyp wie folgt an.
"r"
Der aufrufende Prozess kann die Standardausgabe des erzeugten Befehls mit dem zurückgegebenen Stream lesen."w"
Der aufrufende Prozess kann die Standardeingabe des erzeugten Befehls mit dem zurückgegebenen Stream schreiben."b"
Öffnen im binären Modus."t"
Öffnen im Textmodus.Hinweis
Wenn die _popen-Funktion in einem Windows-Programm verwendet wird, gibt sie einen ungültigen Dateizeiger zurück, der dafür sorgt, dass das Programm für unbestimmte Zeit nicht mehr reagiert._popen funktioniert in einer Konsolenanwendung.Wie eine Windows-Anwendung erstellt wird, die Eingabe und Ausgabe umleitet, lesen Sie im Artikel zum Erstellen eines untergeordneten Prozesses mit umgeleiteter Eingabe und Ausgabe von Windows SDK.
_wpopen ist eine Breitzeichenversion von _popen. Das path-Argument für _wpopen ist eine Breitzeichenfolge. _wpopen und _popen verhalten sich andernfalls identisch.
Zuordnung generischer Textroutinen
Tchar.h-Routine |
_UNICODE und _MBCS nicht definiert |
_MBCS definiert |
_UNICODE definiert |
---|---|---|---|
_tpopen |
_popen |
_popen |
_wpopen |
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_popen |
<stdio.h> |
_wpopen |
<stdio.h> oder <wchar.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Bibliotheken
Alle Versionen C-Laufzeitbibliotheken.
Beispiel
// crt_popen.c
/* This program uses _popen and _pclose to receive a
* stream of text from a system process.
*/
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
char psBuffer[128];
FILE *pPipe;
/* 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( (pPipe = _popen( "dir *.c /on /p", "rt" )) == NULL )
exit( 1 );
/* Read pipe until end of file, or an error occurs. */
while(fgets(psBuffer, 128, pPipe))
{
printf(psBuffer);
}
/* Close pipe and print return value of pPipe. */
if (feof( pPipe))
{
printf( "\nProcess returned %d\n", _pclose( pPipe ) );
}
else
{
printf( "Error: Failed to read the pipe to the end.\n");
}
}
Beispielausgabe
Bei dieser Ausgabe wird davon ausgegangen, dass das aktuelle Verzeichnis nur eine Datei mit der Dateinamenerweiterung .c enthält.
Volume in drive C is CDRIVE
Volume Serial Number is 0E17-1702
Directory of D:\proj\console\test1
07/17/98 07:26p 780 popen.c
1 File(s) 780 bytes
86,597,632 bytes free
Process returned 0
.NET Framework-Entsprechung
Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.