_popen, _wpopen
Stellt eine Pipe erstellt und führt einen Befehl aus.
Wichtig |
---|
Diese API kann nicht in den Anwendungen verwendet werden, die in der Windows Runtime ausführen.Weitere Informationen finden Sie unter CRT-Funktionen unterstützt nicht mit /ZW. |
FILE *_popen( const char *command, const char *mode ); FILE *_wpopen( const wchar_t *command, const wchar_t *mode );
Parameter
command
Befehl ausgeführt werden.mode
Modus des zurückgegebenen Streams.
Rückgabewert
Gibt einen Stream zurück, der mit einem Ende der erstellten Pipe zugeordnet ist.Die anderen Ende der Pipe wird mit der generierten Standardeingabe- oder Standardausgabe des Befehls zugeordnet.Die Funktionen geben NULL bei einem Fehler zurück.Wenn der Fehler ein ungültiger Parameter ist, wie, wenn Befehl oder Modus ein NULL-Zeiger ist, oder Modus ist kein gültiger Modus, errno wird zu EINVAL festgelegt.Weitere Informationen finden Sie in den Hinweisen für gültige Modi.
Weitere Informationen über diese und andere Fehlercodes, finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.
Hinweise
Die _popen-Funktion stellt eine Pipe erstellt und führt asynchron eine generierte Kopie des Befehlsprozessors mit dem angegebenen Zeichenfolgenbefehl aus.Der Zeichenfolgen modus gibt den Typ des Zugriffs angefordert, wie folgt an.
"r"
Der aufrufende Prozess kann die generierten Standardausgabe des Befehls mithilfe des zurückgegebenen Streams lesen."w"
Der aufrufende Prozess kann zur generierten Standardeingabe des Befehls mithilfe des zurückgegebenen Streams schreiben."b"
Öffnen Sie im binären Modus."t"
Öffnen Sie im Textmodus.Hinweis Wenn sie in einem Windows-Programm verwendet wird, gibt die Funktion _popen einen ungültigen Dateizeiger zurück, der das Programm wird endlos, nicht mehr reagiert._popen funktioniert in einer Konsolenanwendung.Um eine Windows-Anwendung erstellt die Eingabe und Ausgabe umgeleitet wird, finden Sie unter Erstellen eines untergeordneten Prozesses mit umgeleiteter Eingabe und Ausgabe in Windows SDK.
_wpopen ist eine Breitzeichen-Version von _popen; das Pfad argument zu _wpopen ist eine Zeichenfolge mit Breitzeichen._wpopen und _popen verhalten sich andernfalls identisch.
Zuordnung generische 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 Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.
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
Diese dieses wird davon ausgegangen, dass es nur eine Datei im aktuellen Verzeichnis mit Wechselstrom-Dateinamenerweiterung gibt.
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. Um die Standard-C-Funktion aufzurufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.