Share via


_popen, _wpopen

Membuat pipa dan menjalankan perintah.

Penting

API ini tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.

Sintaks

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

Parameter

command
Perintah yang akan dijalankan.

mode
Mode aliran yang dikembalikan.

Nilai hasil

Mengembalikan aliran yang terkait dengan salah satu ujung pipa yang dibuat. Ujung lain dari pipa dikaitkan dengan input standar perintah yang ditelurkan atau output standar. Fungsi kembali NULL pada kesalahan. Jika kesalahan disebabkan oleh parameter yang tidak valid, errno diatur ke EINVAL. Lihat bagian Komentar untuk mode yang valid.

Untuk informasi tentang kode kesalahan ini dan lainnya, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.

Keterangan

Fungsi ini _popen membuat pipa. Kemudian secara asinkron menjalankan salinan prosesor perintah yang ditelurkan, dan menggunakan command sebagai baris perintah. String mode karakter menentukan jenis akses yang diminta, sebagai berikut.

Mode akses Deskripsi
"r" Proses panggilan dapat membaca output standar perintah yang ditelurkan menggunakan aliran yang dikembalikan.
"w" Proses pemanggilan dapat menulis ke input standar perintah yang ditelurkan menggunakan aliran yang dikembalikan.
"b" Buka dalam mode biner.
"t" Buka dalam mode teks.

Catatan

Jika digunakan dalam program Windows, _popen fungsi mengembalikan penunjuk file yang tidak valid yang menyebabkan program berhenti merespons tanpa batas waktu. _popen berfungsi dengan baik dalam aplikasi konsol. Untuk membuat aplikasi Windows yang mengalihkan input dan output, lihat Membuat proses anak dengan input dan output yang dialihkan di Windows SDK.

_wpopen adalah versi karakter luas dari _popen; path argumen ke _wpopen adalah string karakter lebar. _wpopen dan _popen berulah secara identik jika tidak.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Pemetaan rutin teks generik

Tchar.h Rutin _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tpopen _popen _popen _wpopen

Persyaratan

Rutin Header yang diperlukan
_popen <stdio.h>
_wpopen <stdio.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Pustaka

Semua versi pustaka run-time C.

Contoh

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

Output ini mengasumsikan hanya ada satu file di direktori saat ini yang memiliki .c ekstensi nama file.

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

Baca juga

Kontrol proses dan lingkungan
_pclose
_pipe