当前位置: 技术问答>linux和unix
如何将子进程的pid传给向进程?
来源: 互联网 发布时间:2016-04-05
本文导语: 众所周知,进程是独占资源的,子进程和父进程之间亦不能资源共享。但是进程之间可以通过最古老的信号进行彼此通信,我的问题就是,如何有效的将子进程的pid传给父进程。注意父进程有多个子进程 ...
众所周知,进程是独占资源的,子进程和父进程之间亦不能资源共享。但是进程之间可以通过最古老的信号进行彼此通信,我的问题就是,如何有效的将子进程的pid传给父进程。注意父进程有多个子进程
|
waitpid呀,返回值就是退出子进程的PID呀。
|
或者你可以先装个信号.
void sig_handler(int signo)
{
if(signo == SIGCHLD)
{
pid_t child_pid = 0;
int status = 0;
while( (child_pid = waitpid(-1,&status,WNOHANG))> 0) //循环回收所有的Zombie进程
{
printf("SIGCHILD --child_pid = %d , status = %dn",child_pid,status);
}
}
}
void setup_handler()
{
struct sigaction sigchld_action;
memset (&sigchld_action, 0, sizeof (sigchld_action));
sigchld_action.sa_handler = &sig_handler;
sigaction (SIGCHLD, &sigchld_action, NULL);
}
|
fork成功就得到了子进程的pid了,再添加一个SIGCHLD的信号处理函数,在里面调用waitpid函数.
|
父进程创建子进程的时候就已经取得了子进程的pid了。
仔细看一下fork的返回值的说明。
或者,你不是使用fork??
那你是怎么做的?说来听听?
仔细看一下fork的返回值的说明。
或者,你不是使用fork??
那你是怎么做的?说来听听?
|
在fork的时候记录下子进程的pid
|
fork返回的就是子进程的ID
LZ有新方法?
LZ有新方法?
|
对呀,楼上都说的挺对的