- 论坛徽章:
- 0
|
回复 3# super皮波
写了代码测试了一下,这是fork之后把标准输出重定向到一个hello文件- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <fcntl.h>
- int main(void)
- {
- pid_t pid;
- int fd1, i = 1;
- pid = fork();
- if(pid < 0)
- {
- perror("fork");
- exit(1);
- }
- else if(pid == 0)
- {
- while(1)
- {
- printf("write %d by child\n",i++);
- sleep(1);
- }
- }
- else
- {
- sleep(10);
- fd1 = open("hello",O_CREAT | O_RDONLY | O_WRONLY | O_APPEND,0755);
- if(fd1 < 0)
- {
- perror("open");
- exit(1);
- }
- dup2(fd1,STDOUT_FILENO);
- while(1)
- {
- printf("write %d by parent\n",i++);
- }
- }
- return 0;
- }
复制代码 这个是在fork之前把标准输出重定向到hello文件- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <fcntl.h>
- int main(void)
- {
- pid_t pid;
- int fd1, i = 1;
- fd1 = open("hello",O_CREAT | O_RDONLY | O_WRONLY | O_APPEND,0755);
- if(fd1 < 0)
- {
- perror("open");
- exit(1);
- }
- dup2(fd1,STDOUT_FILENO);
- pid = fork();
- if(pid < 0)
- {
- perror("fork");
- exit(1);
- }
- else if(pid == 0)
- {
- while(1)
- {
- printf("write %d by child\n",i++);
- usleep(10000);
- }
- }
- else
- {
- sleep(5);
- while(1)
- {
- printf("write %d by parent\n",i++);
- usleep(10000);
- }
- }
- return 0;
- }
复制代码 刚开始的时候一直不太理解 |
|