Fungsi ini adalah bagian dari pustaka stdio.h yang berguna untuk memanggil  proses. Bentuk umumnya adalah :

FILE *popen(const char *perintah, const char *tipe);

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