创建一对父子进程:
父进程负责向文件中写入 长方形的长和宽
子进程负责读取文件中的长宽信息后,计算长方形的面积
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#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 retval=fork();if(retval>0){int wfd=open("./rectangular_property.txt",O_WRONLY|O_RDONLY|O_TRUNC);if(wfd==-1){perror("wopen");return 1;}float len_width[2]={0};printf("please enter length:");scanf("%f",&len_width[0]);while(getchar() != '\n');printf("please enter width:");scanf("%f",&len_width[1]); while(getchar() != '\n');while(1){size_t wretval=write(wfd,len_width,sizeof(len_width));if(wretval==sizeof(len_width)||wretval==-1){break;}}close(wfd);sleep(5);}else if(retval==0){sleep(5);int rfd=open("./rectangular_property.txt",O_RDONLY);if(rfd==-1){perror("ropen");return 1;}float read_data[2]={0};while(1){size_t rretval=read(rfd,read_data,8);if(rretval==0||rretval==-1){break;}printf("rectangular_area=%.2f\n",read_data[0]*read_data[1]);}close(rfd);}else{perror("fork");}return 0;
}
运行结果:
写入文件内容: