当前位置: 技术问答>linux和unix
!!(100分请教)这是输出转向的BUG吗?
来源: 互联网 发布时间:2014-12-30
本文导语: 我可能说得比较罗嗦 耐心点看看吧 那天操作系统老师给我们一段代码 要我们画出进程树 代码如下 void Main() { int i; printf("%5d%5d%5d",getpid(),getppid(),getPgid(0)); for(i=0;i&1 看看 | 有什...
我可能说得比较罗嗦 耐心点看看吧
那天操作系统老师给我们一段代码 要我们画出进程树
代码如下
void Main()
{
int i;
printf("%5d%5d%5d",getpid(),getppid(),getPgid(0));
for(i=0;i&1
看看
那天操作系统老师给我们一段代码 要我们画出进程树
代码如下
void Main()
{
int i;
printf("%5d%5d%5d",getpid(),getppid(),getPgid(0));
for(i=0;i&1
看看
|
有什么奇怪的,你的程序意图因该是父进程分别创建3个子进程,分别打印信息,但是你的程序中
if(fork()==0)
{
printf("%5d%5d%5d",getpid(),getppid(),getpgid(0));
}
没有exit(0);,也就是紫禁城打完自己信息后没有退出。它会继续执行循环所以就出现了你看到的现象,呵呵,修改一下你的程序,你可以看得更清楚
#include
int main()
{
int i;
int j = 0;
printf("main %5d %5d %5dn",getpid(),getppid(),getpgid(0));
for(i=0;i
if(fork()==0)
{
printf("%5d%5d%5d",getpid(),getppid(),getpgid(0));
}
没有exit(0);,也就是紫禁城打完自己信息后没有退出。它会继续执行循环所以就出现了你看到的现象,呵呵,修改一下你的程序,你可以看得更清楚
#include
int main()
{
int i;
int j = 0;
printf("main %5d %5d %5dn",getpid(),getppid(),getpgid(0));
for(i=0;i