simple.c – download link
// named pipe
// Firman Gautama#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>int main(void) {
int p, check, nilai;
FILE *fp;// sebelum fork
system(“clear”);
check = mkfifo(“pipe”, 0666);if(check < 0)
{ printf(“pipe gagaln”);
exit(0);
}// forking stuff
p = fork();if(p < 0)
{
printf(“fork() gagal!n”);
}else if(p == 0)
{
printf(“ini childn”);printf(“masukan nilai : “);
scanf(“%d”, &nilai);fp = fopen(“pipe”, “w”);
fprintf(fp, “%d”, nilai);
fclose(fp);
}else
{
fp = fopen(“pipe”, “r”);
fscanf(fp, “%d”, &nilai);
fclose(fp);
printf(“ini parentn”);
printf(“isi umur : [%d]n”, nilai);// hapus “pipe” yg abis dipake
unlink(“pipe”);// wait for child to finish
wait(&p);
}
return 0;
}
—————————————————————————————————————————————————–
advanced.c – download link
// named pipe
// Firman Gautama#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>int main(void) {
int p, check, nilai;
char kata[128], tai;
FILE *fp;// sebelum fork
system(“clear”);
check = mkfifo(“pipe”, 0666);if(check < 0)
{ printf(“pipe gagaln”);
exit(0);
}// forking stuff
p = fork();if(p < 0)
{
printf(“fork() gagal!n”);
}else if(p == 0)
{
printf(“ini childn”);printf(“masukan nilai : “);
scanf(“%d”, &nilai);scanf(“%c”, &tai);
printf(“masukan kata : “);
scanf(“%[^n]”, kata);fp = fopen(“pipe”, “w”);
fprintf(fp, “%dn%s”, nilai, kata);
fclose(fp);
}else
{
fp = fopen(“pipe”, “r”);
fscanf(fp, “%dn%[^n]”, &nilai, kata);
fclose(fp);
printf(“ini parentn”);
printf(“isi umur : [%d]n”, nilai);
printf(“isi kata : [%s]n”, kata);// hapus “pipe” yg abis dipake
unlink(“pipe”);// wait for child to finish
wait(&p);
}
return 0;
}