[Linux 开发与高级讨论] 有关进程的第二个问题

发信人: darlingpeng (坏同志式的好同志), 信区: LinuxDev
标 题: 有关进程的第二个问题
发信站: 水木社区 (Fri May 12 09:47:27 2017), 站内

大家好,

我有下面的代码,
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

[code=c]
int main()
{
pid_t pid;
printf("parent: pid=%d, ppid=%d, gpid=%d\n", getpid(), getppid(), getpgrp());
pid = fork();
if (pid == 0)
{
printf("child: pid=%d, ppid=%d, gpid=%d\n", getpid(), getppid(), getpgrp());
} else
{

printf("father: pid=%d, ppid=%d, gpid=%d\n", getpid(), getppid(), getpgrp());
sleep(1);////这个地方
}
return 0;
}
[/code]

有两个问题:

1. 我如果没有加sleep(1),那么子进程中显示的父进程号就不是主进程的进程号,只有加了休眠后,值才是对的?

2. 我如果不加sleep()函数,软件需要按回车键后才回到shell环境,加了sleep()后,会主动回到shell环境?

为什么?????

谢谢大家


--

※ 来源:·水木社区 http://ift.tt/15tmf2p: 183.202.8.*]


from 水木社区 电脑技术区十大热门话题 http://ift.tt/2rpFrlT
via IFTTT

评论

此博客中的热门博文

丰田将在 2019 东京车展上展出一台超迷你的都市型电动车

[数字家庭] [原创]北京联通IPTV的完美方案

英特尔将推出更多支持 e-SIM 的 modem