El programa calcula la suma de números de 1 a N .. El proceso hijo calcula la suma de números EVEN. El proceso principal calcula la suma de los números impares. Deseo obtener el valor de retorno del proceso secundario en el proceso principal. ¿Cómo hago eso¿Cómo obtener el valor de retorno de CHILD PROCESS?
#include<stdio.h>
#include<errno.h>
#include<unistd.h>
#include<stdlib.h>
#include<fcntl.h>
int main()
{
int N;
int id;
int fd_result;;
printf("Enter N till which you want the sum: \n");
scanf("%d",&N);
if ((fd_result=creat("result", 600))== -1)
{
perror("Error creating file");
exit(1);
}
if ((fd_result=open("result",O_TRUNC | O_RDWR)) == -1)
{
perror("Error Opening file");
exit(1);
}
if ((id=fork())<0)
{
perror("Error occurred forking....!");
exit(errno);
}
if (id == 0)
{
int i;
int sum=0;
for (i=0;i<=N;i=i+2)
sum+=i;
printf("Child sum: %d",sum);
if (write(fd_result,&sum,sizeof(int))==-1) perror("Error writing to file");
_exit(0);
}
if (id > 0)
{
int i;
int sum=0;
int sum_odd;
for (i=1;i<=N;i=i+2)
sum+=i;
lseek(fd_result,0,SEEK_SET);
read(fd_result,&sum_odd,sizeof(int));
printf("\nThe sum is: %d",sum+(int)sum_odd);
}
close(fd_result);
return 0;
}
Pls dígame cómo consigo el valor de retorno del proceso del niño?
¿Cómo lo uso en realidad? No puedo obtenerlo De hecho, es la primera vez que escribo un programa fork() ... pls help –
En la llamada principal waitpid (-1, & status, 0); –
después, printf ("estado devuelto:% d", WEXITSTATUS (estado)); ... –