Aracılığıyla paylaş


_popen, _wpopen

Bir kanal oluşturur ve bir komut yürütür.

Önemli

Bu API, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz. Daha fazla bilgi için bkz. Evrensel Windows Platformu uygulamalarında desteklenmeyen CRT işlevleri.

Sözdizimi

FILE *_popen(
    const char *command,
    const char *mode
);
FILE *_wpopen(
    const wchar_t *command,
    const wchar_t *mode
);

Parametreler

command
Yürütülecek komut.

mode
Döndürülen akışın modu.

Dönüş değeri

Oluşturulan kanalın bir ucuyla ilişkilendirilmiş bir akış döndürür. Kanalın diğer ucu, oluşturulan komutun standart girişi veya standart çıkışıyla ilişkilendirilir. İşlevler bir hata döndürür NULL . Hata geçersiz bir parametreden kaynaklanıyorsa, errno olarak EINVALayarlanır. Geçerli modlar için Açıklamalar bölümüne bakın.

Bunlar ve diğer hata kodları hakkında bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Açıklamalar

_popen işlevi bir kanal oluşturur. Ardından komut işlemcisinin oluşturulan bir kopyasını zaman uyumsuz olarak yürütür ve komut satırı olarak kullanır command . Karakter dizesi mode , istenen erişim türünü aşağıdaki gibi belirtir.

Erişim modu Açıklama
"r" Çağırma işlemi, döndürülen akışı kullanarak oluşturulan komutun standart çıkışını okuyabilir.
"w" Çağrı işlemi, döndürülen akışı kullanarak oluşturulan komutun standart girişine yazabilir.
"b" İkili modda açın.
"t" Metin modunda açın.

Not

Bir Windows programında kullanılırsa işlev, _popen programın süresiz olarak yanıt vermeyi durdurmasına neden olan geçersiz bir dosya işaretçisi döndürür. _popen bir konsol uygulamasında düzgün çalışır. Giriş ve çıkışı yeniden yönlendiren bir Windows uygulaması oluşturmak için bkz . Windows SDK'da yeniden yönlendirilen giriş ve çıkış ile alt işlem oluşturma.

_wpopen , öğesinin _popengeniş karakterli bir sürümüdür; path bağımsız değişkeni _wpopen geniş karakterli bir dizedir. _wpopen ve _popen aksi takdirde aynı şekilde davran.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Genel metin yordamı eşlemeleri

Tchar.h olağan _UNICODE ve _MBCS tanımlanmadı _MBCS tanımlanan _UNICODE tanımlanan
_tpopen _popen _popen _wpopen

Gereksinimler

Yordam Gerekli başlık
_popen <stdio.h>
_wpopen <stdio.h> veya <wchar.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Kitaplıklar

C çalışma zamanı kitaplıklarının tüm sürümleri.

Örnek

// 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))
    {
        puts(psBuffer);
    }

    int endOfFileVal = feof(pPipe);
    int closeReturnVal = _pclose(pPipe);

    if (endOfFileVal)
    {
        printf("\nProcess returned %d\n", closeReturnVal);
    }
    else
    {
        printf("Error: Failed to read the pipe to the end.\n");
    }
}

Bu çıkış, geçerli dizinde dosya adı uzantısına sahip tek bir .c dosya olduğunu varsayar.

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

Ayrıca bkz.

İşlem ve ortam denetimi
_pclose
_pipe