Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在父母死亡后,未向子女提供stdin控制_C_Fork_Stdin - Fatal编程技术网

C 在父母死亡后,未向子女提供stdin控制

C 在父母死亡后,未向子女提供stdin控制,c,fork,stdin,C,Fork,Stdin,考虑到下面的代码,当父进程终止时,shell将收回stdin控件,并且除了通过“ps-e”命令外,无法看到子进程正在运行。 有没有办法在父进程死亡之前将stdin控制权交给子进程? 我在这里读过一些类似的话题,但没有一个能解决这个问题。有人建议使用“#cat |/a.out”作为解决方案,但如果有,我需要代码级解决方案 pid = fork(); if( pid == 0) { while(1); } else { //wait(&childstatus); pr

考虑到下面的代码,当父进程终止时,shell将收回stdin控件,并且除了通过“ps-e”命令外,无法看到子进程正在运行。 有没有办法在父进程死亡之前将stdin控制权交给子进程? 我在这里读过一些类似的话题,但没有一个能解决这个问题。有人建议使用“#cat |/a.out”作为解决方案,但如果有,我需要代码级解决方案

pid = fork();
if( pid == 0)
{
    while(1);
}
else
{
    //wait(&childstatus);
    printf("Hello From Parent\n");
}

是的,这就是壳牌的工作方式。如果您不希望shell take active process组处于活动状态,请使父进程保持活动状态。

您需要它做什么?你不能简单地切换进程,让子进程死亡,父进程继续吗?代码只是一个例子,我不需要特别为这段代码。一般来说,我都在学习。如果父母创造了一个孩子并做了一些事情,那么当孩子还在做其他事情时,一切就结束了。在父母死亡后,父母如何让其子女拥有stdin的控制权以完成其执行,而不让父母等待子女完成?有什么办法吗?我发现你的问题很有趣,从这篇文章中你会猜到你想要的是不可能的。然而,进一步阅读,我还发现了另一个:,关于prctl()命令(来自linux内核3.4),它扩展了子进程的可能性,但仍然没有做您真正想做的事情。听起来不错。如果我们可以通过shell而不是init进程重新设置子进程的父级。但正如你所说,stdin的所有权并没有改变。Thanks@user3480226您不能让shell为子对象重新设置父对象。相反,让父级
等待()
,直到子级完成。