October 14, 2008 thumb Membuat Anak Proses

source code berikut ini mengimplementasikan bagaimana cara membuat sebuah anak proses, permasalahanya sebagai berikut, sebuah program akan membuat anak proses yang membalik sebuah string dari induk prosesnya.., setelah itu anak program akan mengirim kembali string yang sudah terbalik tadi ke induk proses untuk ditampilkan ke layar….?

untuk menyelesaikanya, kita butuh 2 alat yaitu pipe dan fork, pipe digunakan untuk mengirim data dari anak ke induk dan fork digunakan untuk membuat anak proses…
=====================================================================================
#include “stdio.h”
#include “string.h”
#include “sys/types.h”
#include “unistd.h”

int main(void) {
char masukan[64]; //string yang akan dibalik
char hasil_balikan[64]; //hasil balikan string
int pipa_penghubung[2]; //pipe untuk alat penghubung
printf(“Masukkan input : “);
scanf(“%s”,&masukan);
pipe(pipa_penghubung); //inisialisasi pipe
int pid=fork(); //membuat anak proses
if ( pid== 0){
/*anak proses melakukan pembalikan*/
close(pipa_penghubung[0]); //pipa pembaca (INDEKS KE 0) ditutup;
int y=0;
int x=strlen(masukan)-1; //menghitung panjang string
while (x>=0){
hasil_balikan[y++] = masukan[x–]; //proses pembalikan
}
FILE *tulis = fdopen(pipa_penghubung[1],”w”); //membuka pipa penulis dan memasukanya ke pointer Buffer FILE
fprintf(tulis,”%s”,hasil_balikan); //menulis hasil_balikan ke pointer buffer;
fclose(tulis); //pointer tulis FILE ditutup;

}
else
{
close(pipa_penghubung[1]); //menutup pipa penulis
FILE *baca = fdopen(pipa_penghubung[0],”r”); //membuka pipa pembaca dan memasukanya ke pointer Buffer FILE
fscanf(baca,”%s”,hasil_balikan); //memasukan pointer isi pointer buffer file ke hasil_balikan
fclose(baca); //menutup pointer buffer FILE
hasil_balikan[strlen(masukan)]=”; //manambah null terminator
printf(“Hasil Pembalikan : %s\n”,hasil_balikan); //menulis hasil balikan ke layar
close(pipa_penghubung[0]); //menutup pipa pembaca
}
return(0);
}

Comments

total comments