- 论坛徽章:
- 0
|
发现一个问题!
源程序:
- // fork.c
- #include<stdio.h>
- #include<sys/types.h>
- int main()
- {
- pid_t pid;
- int i;
- printf("Main pid=%d, parent pid=%d\n", getpid(), getppid());
- for(i=0;i<2;i++)
- {
- if( (pid=fork()) < 0)
- fprintf(stderr, "fork error on %d\n",i);
- else if( pid > 0)
- printf("pid=%d, parent pid=%d, parent fork %d\n",getpid(),getppid(),i);
- else
- printf("pid=%d, parent pid=%d, child fork %d\n", getpid(),getppid(),i);
- }
- exit(0);
- }
复制代码
输出:
$ ./fork
Main pid=2020, parent pid=2676
pid=2044, parent pid=2020, child fork 0
pid=2020, parent pid=2676, parent fork 0
pid=2044, parent pid=2020, parent fork 1
pid=564, parent pid=1, child fork 1
pid=2476, parent pid=2020, child fork 1
pid=2020, parent pid=2676, parent fork 1
$ ps
PID PPID PGID WINPID TTY UID STIME COMMAND
2676 1 2676 2676 con 1003 12:18:34 /usr/bin/bash
2996 2676 2996 2948 con 1003 12:29:38 /usr/bin/ps pid=564, parent pid=1, child fork 1
pid = 1的进程是什么进程? 为什么bash的父进程也是pid = 1呢?(我在Cygwin里测试的)
[ 本帖最后由 tyc611 于 2006-12-21 13:07 编辑 ] |
|