创建一对父子进程:
父进程负责向文件中写入 长方形的长和宽
子进程负责读取文件中的长宽信息后,计算长方形的面积
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
int main(int argc, const char *argv[])
{
int pd=fork();
if(pd==-1)
{
perror("open:");
return 1;
}
if(pd>0)
{
int fd=open("./shuju.txt",O_WRONLY|O_CREAT,0666);
if(fd==-1)
{
perror("open:");
return 1;
}
int arr[2]={0};
for(int i=0;i<2;i++)
{
if(i==0)
{
printf("请输入长方形的长:");
}
else
{
printf("请输入长方形的宽:");
}
scanf("%d",&arr[i]);
while(getchar()!='\n');
write(fd,arr+i,4);
}
close(fd);
wait(0);
}
else if(pd==0)
{
sleep(3);
int fd=open("./shuju.txt",O_RDONLY);
if(fd==-1)
{
perror("open:");
return 1;
}
int arr[2]={0};
for(int i=0;i<2;i++)
{
read(fd,arr+i,4);
}
close(fd);
printf("长方形的长和宽的乘积为%d\n",arr[0]*arr[1]);
return 0;
}
return 0;
}
运行结果为:
思维导图为: