读书人

深夜无心睡眠上来请问进程

发布时间: 2013-06-25 23:45:41 作者: rapoo

深夜无心睡眠,上来请教进程
今天做了两道进程的题目,第一道是一个父进程创建任意多个子进程,第二道是由父进程创建子进程,子进程又创建子进程的子进程,以此类推像一条链。

第一道我用循环语句来做,无压力,只是不明白,当父进程比子进程先exit(0)时,子进程的getppid()显示的是1,为什么是1而不是0?另外,从这题目看出在同一个函数下所创建的子进程都是由同一个父进程创建的

第二道,从第一道题的分析,我觉得直接用循环语句是行不通的,也许跟在同一个main函数下创建进程相关,于是我尝试创建一个函数来创建进程,然后用递归方式创建多个进程(用递归是觉得写起来比较方便),发现成功了,然后只需要调用waitpid可以排一下先后顺序,显示出每个子进程的子进程号与它的父进程号都是呈链状。

第二道题我是不太明白所以,程序里面可以创建多个函数,但依然是一个程序,或者是从一个可执行文件里运行的,进程是计算机中正在运行的程序实例,那么为什么用函数可以创建不同父进程的子进程
[解决办法]
跟函数没有一点关系,是基本的代码逻辑问题。不如贴你的代码来看。
[解决办法]
你在create时打印下当前进程的id

进程,要找本操作系统类的书看一下
[解决办法]
程序和进程不是一回事!
参考linux进程管理或《深入解析Windows操作系统-Windows Internals》进程管理
[解决办法]
while (1)
{
pid = fork();
if (pid > 0) // parent
break;
}

读书人网 >C语言

热点推荐