Fungsi ini adalah bagian dari pustaka stdio.h yang berguna untuk memanggil proses. Bentuk umumnya adalah :
dimana :
- *perintah adalah string yang berisi perintah yang hendak dikerjakan.
- *tipe adalah "r" untuk read-only dan "w" untuk write.
popen() memiliki nilai kembalian berupa stream pointer jika sukses dan NULL untuk error. Untuk menutup fungsi ini kita bisa gunakan perintah :
pclose(FILE *stream_pointer);
Berikut adalah contoh aplikasinya :
$ edit test_popen.c
#include <stdio.h>
main()
{
FILE *fp;
char tampil[200]; /* penampung baris-baris tampilan hasil. */
fp = popen("ls -l", "r"); /* perintah yang diberikan. */
/* pembacaan baris-baris tampilan hasil. */
while ( fgets(tampil, sizeof tampil, fp)) /* menggunakan fungsi fgets untuk mendapatkan string [tampil] dari sebuah stream [fp]*/
{
printf("%s", tampil); /* lihatlah, tipe tampil adalah string [%s] yang kita dapat dari dari stream pointer fp */
}
pclose(fp); /* penutupan */
}
$ gcc -o test_popen test_popen.c
$ ./test_popen
total 108
-rw-r–r– 1 handaru 1001 14 Jan 6 22:34 coba
-rwxr-xr-x 1 root 1001 4917 Jan 9 21:32 cobaread
-rw-r–r– 1 root 1001 343 Jan 9 21:32 cobaread.c
-rwxr-xr-x 1 handaru 1001 4734 Aug 29 14:49 hello
-rw-r–r– 1 handaru 1001 58 Aug 29 14:49 hello.c
-rw-r–r– 1 root 1001 154 Dec 19 15:21 killerror.txt
-rw-r–r– 1 root 1001 154 Dec 19 15:27 killerror2.txt
-rw-r–r– 1 root 1001 166 Dec 20 12:43 psaxgrepsendmail.txt
-rw-r–r– 1 root 1001 166 Dec 20 12:28 psaxgrepsenmail.txt
-rw-r–r– 1 root 1001 2991 Dec 20 12:27 psaxoutput.txt
-rw-r–r– 1 root 1001 5 Dec 18 15:42 psin.txt
-rw-r–r– 1 root 1001 2974 Dec 18 15:44 psoutput.txt
-rw-r–r– 1 root 1001 70 Dec 18 15:13 psoutput1.txt
-rw-r–r– 1 root 1001 2974 Dec 20 12:24 pssort.txt
-rwxr-xr-x 1 root 1001 4890 Jan 20 22:39 sistem
-rw-r–r– 1 root 1001 159 Jan 20 22:30 sistem.c
-rwxr-xr-x 1 root 1001 4915 Jan 20 23:00 sistem2
-rw-r–r– 1 root 1001 180 Jan 20 23:00 sistem2.c
-rw-r–r– 1 handaru 1001 40 Jan 16 09:04 so.txt
-rwxr-xr-x 1 handaru 1001 5571 Jan 25 19:19 tes_fork
-rw-r–r– 1 handaru 1001 738 Jan 25 19:01 tes_fork.c
-rwxr-xr-x 1 handaru 1001 4865 Jan 25 16:32 test_execl
-rw-r–r– 1 handaru 1001 103 Jan 25 16:32 test_execl.c
-rwxr-xr-x 1 handaru 1001 5361 Feb 3 13:07 test_exit
-rw-r–r– 1 handaru 1001 770 Feb 3 13:04 test_exit.c
-rwxr-xr-x 1 handaru 1001 5328 Jan 25 19:32 test_fork
-rw-r–r– 1 handaru 1001 535 Jan 28 12:22 test_fork.c
-rwxr-xr-x 1 handaru 1001 5042 Feb 9 10:12 test_popen
-rw-r–r– 1 handaru 1001 309 Feb 9 10:12 test_popen.c
-rwxr-xr-x 1 handaru 1001 5552 Jan 28 13:09 test_wait
-rw-r–r– 1 handaru 1001 582 Jan 28 13:09 test_wait.c
$
FreeBSD…masih ragu-kah dirimu ?
Dedicated for Light Intermutimedia
Perusahaan Software Pulsa