Parent and child share files using open file descriptors ------ completion of inter-process communication.
/*** fork_share_fd.c ***/ #include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #include <sys/wait.h> int main(void) { int fd1, fd2; pid_t pid; char buf[1024]; char *str = "---------test for shared fd in parent child process-----\n"; pid = fork(); if (pid < 0) { perror("fork error"); exit(1); } else if (pid == 0) { fd1 = open("test.txt", O_RDWR); if (fd1 < 0) { perror("open error"); exit(1); } write(fd1, str, strlen(str)); printf("child wrote over...\n"); } else{ FD2 = Open ( " test.txt " , O_RDWR); IF (FD2 < 0 ) { perror ( " Open error " ); Exit ( . 1 ); } SLEEP ( . 1 ); // ensure that the child process writes data int len Read = (FD2, buf, the sizeof (buf)); Write (STDOUT_FILENO, buf, len); the wait (NULL); } return 0 ; }
operation result:
ubuntu1604 @ ubuntu: ~ / wangqinghe / linux / 20190806 $ ./fork_share_fd
child wrote over...
---------test for shared fd in parent child process-----