关于parent process 和 child process的问题
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<iostream>
using namespace std;
int main()
{
pid_t pid;
if((pid = fork() )<0)
{
perror("Error");
exit(1);
}else if(pid > 0)
{
sleep(5);
cout<<" hello ";
waitpid(-1,NULL,WNOHANG);
}else
{
cout<<" world ";
_exit(2);
}
}
关于parent process 和 child process的问题
a.上面存不存在race condition,也就是说上面的运行结果确定吗?
b.我的初衷是用子进程打印"hello",父进程打印"world",怎么修改程序才能实现?
c.apue书上"waitpid提供了一个wait的非阻塞版本",我可不可以怎么理解?
就是让child process执行完,再待它退出后,然后对它进行善后处理.
该怎么理解这个阻塞?
d.stdout,STDOU_FILENO,cout,这三个东西是不是指的是同个东西.
当在一个进程中exit后,关闭了了所有标准i/o流,是不是就不能在对它们三个中的任何一个进行写,
除非进行一些另外的操作?