我通过类似以下的Python代码调用子进程:
proc = subprocess.Popen(["bash", "-ic", ". foo.bash && some_func_from_foo"])
我打开的其中一个进程会生成一堆子进程(或子进程,或分叉进程,不确定哪些进程),并且子进程的一个会死掉。这种垂死是可以预期的行为。但是,我不希望实际的Python程序在这个节点终止时被中断,但是在子进程终止之后,Python程序被暂停,我看到[1]+ Stopped rosrun my_package my_app.py
。
更多细节:我正在从命令行运行ROS启动文件。当其中一个节点死亡时,它会提供以下类型的输出:
terminate called after throwing an instance of 'std::runtime_error'
what(): ...
[my_node_name] process has died [pid 30816, exit code -6, ...]
然后Python程序被发送到后台,让我回到bash(我必须运行fg 1
来恢复Python程序。)
有没有办法阻止Python进程被一个产生死亡的子进程的子进程背景化?