mkfifo-fork

...IDE, compilers, κλπ

Συντονιστής: konnn

mkfifo-fork

Δημοσίευσηαπό spilia » 14 Μάιος 2011, 11:26

Κώδικας: Επιλογή όλων
#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. δεν ηθελα να μ πειτε την λυση απλα να με βοηθεισετε να την βρω μονος γιατι εχω σπασει το κεφαλι μου.

ευχαριστω.
spilia
babeTUX
babeTUX
 
Δημοσιεύσεις: 3
Εγγραφή: 27 Νοέμ 2010, 13:29
Εκτύπωση

Re: mkfifo-fork

Δημοσίευσηαπό linuxs » 14 Ιουν 2011, 15:28

Αν και το θέμα θα έχει λυθεί φαντάζομαι, το λάθος είναι συγκεκριμένα στην read(). Όποιος θέλει ασ ρίξει μια ματιά εδώ: http://gd.tuwien.ac.at/languages/c/programming-bbrown/c_075.htm. Δεν την έχω χρησιμοποιήσει ποτέ αλλα απο την στιγμή που δεν επιστρέφει κάτι δεν θα έχει σωστή σύνταξη. νομίζω...
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση


Επιστροφή στο Εφαρμογές για Ανάπτυξη Λογισμικού