|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2007
Messaggi: 19
|
pipe in C sotto linux
vi riporto il codice ....non capisco perchè quando voglio far leggere al padre quello che scrive il figlio si blocca in esecuzione ...........perchè?!
#include <sys/types.h> #include <stdio.h> #include <sys/wait.h> #include <stdlib.h> main() { int c; int j=6; int pid; int status; int piped[2]; /* genera primo figlio*/ pipe(piped); pid=fork(); if (!pid) {printf("\n"); printf("Sono il filgio:PID=%d PPID=%d ",getpid(),getppid()); read(piped[0],&c,sizeof(int)); printf("leggo %d\n",c); write(piped[1],8,sizeof(int)); esattamente qui printf("sono il figlio ho scritto %d"); exit(0); } else {printf("\n"); write(piped[1],&j,sizeof(int)); printf("sono il padre e ho scritto %d\n",j); read(piped[0],&c,sizeof(int)); esattamente qui printf("sono il padre e leggo %d\n",c); pid=wait(&status); printf("figlio terminato:PID=%d Stato=%d\n",pid,status); printf("programma terminato"); getchar(); } } |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
EFAULT
(compilare con -Wall no eh?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jun 2007
Messaggi: 19
|
non ho capito che dovrei fare?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Compilare con -Wall e leggere i warning.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Jun 2007
Messaggi: 19
|
ho risolto ...una pipe è a senso unico se il padre scrive puo solo scrivere e non leggere idem per il figlio ......per ovviare al problema si creaun altra pipe
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:06.




















