当前位置: 技术问答>linux和unix
一个关于fork创建子进程的问题。
来源: 互联网 发布时间:2017-02-22
本文导语: 写了一个fork函数创建进程的程序:#include int main() { int proc_id; while((proc_id=fork())==-1); /*创建进程,直到成功为止*/ if(proc_id) /*如果返回的进程标志不等于0,表示处理机分配给了父进程*/ { printf("Parent...
写了一个fork函数创建进程的程序:#include
int main()
{
int proc_id;
while((proc_id=fork())==-1); /*创建进程,直到成功为止*/
if(proc_id) /*如果返回的进程标志不等于0,表示处理机分配给了父进程*/
{
printf("Parent process's program.n");/*执行父进程的程序*/
}
else
{
printf("Child process's program.n");/*等于零,处理机分配给了子进程,执行子进程的程序*/
}
return 0;
}
运行结果:父子程序均执行了,但是不知道为什么,子程序的输出“Chid process's program."在终端命令提示符之后
int main()
{
int proc_id;
while((proc_id=fork())==-1); /*创建进程,直到成功为止*/
if(proc_id) /*如果返回的进程标志不等于0,表示处理机分配给了父进程*/
{
printf("Parent process's program.n");/*执行父进程的程序*/
}
else
{
printf("Child process's program.n");/*等于零,处理机分配给了子进程,执行子进程的程序*/
}
return 0;
}
运行结果:父子程序均执行了,但是不知道为什么,子程序的输出“Chid process's program."在终端命令提示符之后
|
父进程加一句waitpid(proc_id, NULL, 0)等待子进程结束,子程序的输出“Chid process's program."就不会在终端命令提示符之后了。
|
个人理解:
父进程结束,返回到shell,shell显示终端提示符.(按常规)
但是子进程未结束,仍然打印字符到终端.所以这时的字符就显示在终端提示符之后了.
父进程结束,返回到shell,shell显示终端提示符.(按常规)
但是子进程未结束,仍然打印字符到终端.所以这时的字符就显示在终端提示符之后了.