- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
int i,fd,x,y,ret,status,n,t;
char namefifo[100],buffer[100];
//se periptosi pou dothoun pano apo ena orisma.
if(argc!=2){
printf("dose akribos ena orisma");
exit(0);}
unlink("FIFO");
if (mkfifo("FIFO", 0755) == -1){
fprintf(stderr," Coudn't create fifo1.\n");
exit(2);
}
ret=fork();
if (ret==-1){
perror("fork");
exit(11);
}
//paidi
if (ret==0){
printf("dose enan arithmo x\n");
scanf("%d",&x);
sprintf(buffer,"%d",x);
printf("%s",buffer);
if ((fd = open("FIFO", O_RDWR | O_NONBLOCK)) == -1){
fprintf(stderr, "Sender: fifo open failed.\n");
exit(3);
}
if ((n = write(fd, buffer, 100)) == -1){
fprintf(stderr, "Sender: Write to fifo failed.\n");
exit(4);
}
}
else{
//pateras
sleep(5);
printf("dose enan arithmo y\n");
scanf("%d",&y);
if ((fd = open("FIFO", O_RDWR)) == -1){
fprintf(stderr, "Receiver: fifo open failed.\n");
exit(1);
}
do{
if (t=read(fd, buffer, 100) == -1){
fprintf(stderr,"Receiver: fifo reading failed.\n");
exit(2);}
printf("Received message: %s\n", buffer);
}while(strcmp(buffer,NULL)!=0);
exit(0);
}
}
Εχω γραψει τον παραπανω κωδικα.θα κανει αλλες λειτουργιες βασικα αλλα αυτη ειναι η αρχικη μορφη.το προβλημα μου ειναι πως μετα απο τους αριθμους που δινουν ο πατερας και το παιδι το συστημα "κολλαει" και δεν μ εμφανιζει το περιεχομενο του buf. δεν ηθελα να μ πειτε την λυση απλα να με βοηθεισετε να την βρω μονος γιατι εχω σπασει το κεφαλι μου.
ευχαριστω.


.