你好,我有這樣的問題c保存分叉PID
pid_t pid1;
pid_t pid2;
void switch_files(int sig_type)
{
printf("%d %d\n", pid1, pid2);
}
int main(int argc, char **argv)
{
pid_t lpid1,lpid2;
if ((lpid1 = fork()) == 0)
{
signal(SIGUSR1, switch_files);
//Some work
} else {
pid1 = lpid1;
}
if ((lpid2 = fork()) == 0)
{
signal(SIGUSR2, switch_files);
//Some work
} else {
pid2 = lpid2;
}
while(scanf("%s", input) > 0)
{
write(pipe1[1], input, strlen(input) + 1);
kill(pid1, SIGUSR1);
}
waitpid(pid1, 0, 0);
waitpid(pid2, 0, 0);
}
,所以我需要在我的回調信號pid1
和pid2
價值,並在printf的我有0 0
但主要我有PID的正常值。我如何解決這個問題,謝謝你的幫助。
'//一些工作'部分是否包含子進程退出,或者您的代碼是否落入運行代碼,這意味着只能在父代中運行? – hyde 2014-11-08 20:51:53
第二個孩子會知道第一個孩子的pid;第一個孩子將永遠不會知道第二個孩子的pid,除非您採取重大措施將信息轉達給第一個孩子。 – 2014-11-08 20:58:34