#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/wait.h>
int main(int argc, const char *argv[])
{
puts("parent proc start");
int fd = open(argv[1], O_CREAT|O_RDWR|O_TRUNC, S_IRWXU);
if(-1 == fd){
perror("open");
return 1;
}
pid_t pid = fork();
if(pid == 0){//child
sleep(5);
puts("child proc start");
lseek(fd, 0, SEEK_SET);
int arr[2] = {};
int retval = read(fd, arr, sizeof(arr));
printf("read %d byte(s)\n", retval);
printf("%d×%d=%d\n", arr[0], arr[1], arr[0]*arr[1]);
puts("child proc end");
}
else if(pid > 0){//parent
int arr[2];
scanf("%d %d", &arr[0], &arr[1]);
int retval = write(fd, arr, sizeof(arr));
printf("write %d byte(s)\n", retval);
wait(NULL);
puts("parent proc end");
}
else{
perror("fork");
return 1;
}
close(fd);
return 0;
}
5.9 作业
于 2024-05-09 20:11:45 首次发布