Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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