Skip navigation

Tag Archives: file descriptor


Di dalam UNIX Command, sering dipakai tanda “|”. Tanda “|” adalah pipe, maksudnya stdout dari sebuah program dapat menjadi stdin dari program yang lain. Di dalam C, fitur ini dapat diimplementasikan dengan fungsi pipe(). Di contoh yang ada pada spesifikasi tersebut hanya menangani antara 2 proses.

#include <stdlib .h>
#include <unistd .h>

int main(){
	int fildes[2];
	const int BSIZE = 100;
	char buf[BSIZE];
	ssize_t nbytes;
	int status;
	status = pipe(fildes);
	switch (fork()) {
	case -1: /* Handle error */
	    break;

	case 0:  /* Child - reads from pipe */
	    close(fildes[1]);                       /* Write end is unused */
	    nbytes = read(fildes[0], buf, BSIZE);   /* Get data from pipe */
	    /* At this point, a further read would see end of file ... */
	    close(fildes[0]);                       /* Finished with pipe */
	    exit(EXIT_SUCCESS);

	default:  /* Parent - writes to pipe */
	    close(fildes[0]);                       /* Read end is unused */
	    write(fildes[1], "Hello world\n", 12);  /* Write data on pipe */
	    close(fildes[1]);                       /* Child will see EOF */
	    exit(EXIT_SUCCESS);
	}
}

Fungsi pipe ini akan menyambungkan input dari sebuah filedescriptor menjadi output pada filedescriptor lain. Input/output ini dibaca dengan menggunakan fungsi read() dan write().

Read More »

Iklan

File descriptor adalah sebuah abstraksi yang digunakan dalam pengaksesan file. Di dalam UNIX, file descriptor ini dilambangkan dalam sebuah integer. Untuk setiap proses, terdapat 3 file descriptor yang telah dimiliki.

  1. Standard input (stdin). Bernilai 0.
  2. Standard output (stdout). Bernilai 1.
  3. Standar error (stderr). Bernilai 2.

File descriptor ini merupakan index pada tabel yang dimiliki kernel untuk menunjukkan file yang dibuka pada proses-proses yang berjalan.

Read More »

%d blogger menyukai ini: