PDA

View Full Version : PIPE ET FORK HELP US


feiser
24-04-2006, 17:09
salve abbiamo dei problemi di programmazione in c sull'utilizzo delle funzioni fork e pipe...
Facendo una fork non riusciamo a far entrare il programma nel processo figlio...nonostante non sbagliamo assolutamente nulla(almeno pensiamo)nel codice...
Ci appaiono messaggi tipo hangup....o broken pipe...a cosa sono dovuit?se volete posto il semplice codice...grazie mille

VICIUS
24-04-2006, 17:27
Un po' di codice non sarebbe male :)

ciao ;)

feiser
24-04-2006, 17:44
#include<curses.h>
#include<stdlib.h>
#include<unistd.h>
#include<stdio.h>

typedef struct pos{
int x;
int y;
char c;
}pos;

void nemici(int *);
void controllo(int*);
pos nemico;

int main(void){
int filedesnem[2];
int pidnem;

initscr();
noecho();
curs_set(0);

if (pipe(filedesnem)== -1){
perror("Errore");
exit(1);
}

nemico.x = 1;
nemico.y = 1;
nemico.c = '@';

pidnem = fork();


if (pidnem == - 1){
perror("Errore");
exit(1);
}
else if(pidnem == 0){
nemici(filedesnem);
}

controllo(filedesnem);

kill(pidnem, 1);
endwin();
return(0);
}

void nemici(int *pipein){
close(pipein[0]);
write(pipein[1], &nemico, sizeof(nemico));
}

void controllo(int *pipeout){
pos appoggio;
close(pipeout[1]);

read(pipeout[0], &appoggio, sizeof(appoggio));
mvaddch(appoggio.y, appoggio.x, appoggio.c);
}



Questo è il codice...i nomi hanno un senso nell'orbita del progettino che devo fare...nn prendetemi per malato di mente :doh: grazie

Fenomeno85
24-04-2006, 18:55
quando fai una fork e vuo i dividere padre da figlio devi anche mettere un if pid > 0 così entrerà solo il figlio

~§~ Sempre E Solo Lei ~§~

feiser
25-04-2006, 02:59
ma nel figlio non entra per quel motivo?

Fenomeno85
25-04-2006, 09:27
il problema è che dopo anche il padre esegue quel codice

~§~ Sempre E Solo Lei ~§~