程序計算從1到N的數字總和。 子進程計算偶數的總和。父進程計算奇數的和。 我想在父進程中獲取子進程的返回值。我該怎麼做如何從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;
}
請告訴我如何獲得子進程的返回值?
我該如何使用它?我無法得到它。其實它第一次寫了一個fork()程序... 請幫忙 – 2010-01-27 13:45:27
在父調用waitpid(-1,&status,0); – 2010-01-27 14:14:02
之後, printf(「status returned:%d」,WEXITSTATUS(status)); ... – 2010-01-27 14:30:17