Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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
Linux 如何进行MONO Process()调用以启动一个不';当它死去时,它不会死去吗?_Linux_Process Management_Mono - Fatal编程技术网

Linux 如何进行MONO Process()调用以启动一个不';当它死去时,它不会死去吗?

Linux 如何进行MONO Process()调用以启动一个不';当它死去时,它不会死去吗?,linux,process-management,mono,Linux,Process Management,Mono,我在Linux系统上使用Mono启动一个进程。有时,父进程会过早地死亡,并带走子进程,但我需要让子进程继续运行。 在测试中,我测试的System.Diagnostics.Process.Start()的每一个变体都会在我终止父进程时导致其子进程死亡。 是否有一些设置我错过了,或其他方式来实现这一点? 作为测试,这: 这个: System.Diagnostics.Process.Start(new ProcessStartInfo("journalctl", "-f") {UseShellEx

我在Linux系统上使用Mono启动一个进程。有时,父进程会过早地死亡,并带走子进程,但我需要让子进程继续运行。
在测试中,我测试的System.Diagnostics.Process.Start()的每一个变体都会在我终止父进程时导致其子进程死亡。 是否有一些设置我错过了,或其他方式来实现这一点? 作为测试,这:


这个:

System.Diagnostics.Process.Start(new ProcessStartInfo("journalctl", "-f") {UseShellExecute = false});
System.Diagnostics.Process.Start("journalctl", "-f");
还有这个:

System.Diagnostics.Process.Start(new ProcessStartInfo("journalctl", "-f") {UseShellExecute = false});
System.Diagnostics.Process.Start("journalctl", "-f");
将启动'journalctl'('ps-aef'指示正确的父子ID),并且当我终止父进程时,'journalctl'也将终止。

我应该为子进程启动一个使用nohup和disown的脚本吗

完全解除子进程与父进程的关联需要子进程进行多次系统调用;如果MONO无法访问适当的系统调用,那么通过shell包装器可以更容易地完成这些操作(
fork
首先创建子进程,然后
setId
退出父进程组,处理标准输入和标准输出文件句柄,可能是
chdir
//code>,以及我忘记的任何其他内容)。您的MONO调用看起来更类似于
系统(3)
系统调用,这也需要为
setsid
等使用包装程序