_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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk