View Single Post
Old 12-07-2008, 09:32   #1
stella_650
Member
 
Iscritto dal: Dec 2006
Messaggi: 104
[C unix] scrittura su file

Buongiorno raga,
vorrei capire perchè non mi funziona bene la scrittura e la lettura di un valore intero su file gestita tramite un processo padre ed un processo figlio nel seguente programma:


Codice:
void handler(int);
int main(int argc, char *argv[])
{
	int fd,pid,pidl,pidc;
	FILE *fp,*fs;
	if(argc!=2)
	{
		printf("Errore! <eseguibile> <nomefile test>\n");
		exit(-1);
	}
	printf("PADRE: %d\n",getpid());
	
	fp=fopen(argv[1],"w");
	fs=fopen(argv[1],"r");

	if((pid=fork())<0)
		perror("Fork");
	if(pid==0)
	{
		signal(SIGUSR1,handler);
		pidc=getpid();
		printf("FIGLIO: %d\n",pidc);
		//Scrivo il pid del figlio nel file
		fprintf(fp,"%d",pidc);
		
		while(1)
			pause();
	}
	else
	{
		while(1)
		{
			signal(SIGUSR2,handler);
			sleep(5);
			//legge il pid dal file
			
			fscanf(fs,"%d",&pidc);
			printf("Letto dal file pid %d\n",pidc);
			kill(pid,SIGUSR1);
			//pause();
		}		
	}
	//close(fd);
	fclose(fp);
	fclose(fs);
	exit(0);
}
void handler(int signo)
{
	if(signo==SIGUSR1)
	{
		printf("SEGNALE FIGLIO%d ricevuto\n",signo);
		kill(getppid(),SIGUSR2);
	}
	if(signo==SIGUSR2)
	{
		printf("SEGNALE PADRE RICEVUTO!\n");
		exit(0);
	}
	return;
}
Grazie in anticipo per l'aiuto...
stella_650 è offline   Rispondi citando il messaggio o parte di esso