lemonade
where dream meets reality
Linux Named Pipe Example
Categories: C

simple.cdownload 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.cdownload 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;
}

Leave a Reply