Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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
当子进程被发送到SIGTERM时,Python segterm会出错_Python_Qt_Segmentation Fault_Subprocess_Pyside - Fatal编程技术网

当子进程被发送到SIGTERM时,Python segterm会出错

当子进程被发送到SIGTERM时,Python segterm会出错,python,qt,segmentation-fault,subprocess,pyside,Python,Qt,Segmentation Fault,Subprocess,Pyside,我用python生成一个子流程,如下所示: proc = subprocess.Popen( [process, arg1, arg2], env= current_env, cwd=exec_path, stdout=subprocess.PIPE) 当我向子流程发送SIGTERM(来自shell,而不是python)时,就会出现问题 如果我使用proc.read() 但是,如果我使用proc.communicate(),那么python会出现错误。据我所知,无论子进程做什么,这都不

我用python生成一个子流程,如下所示:

proc = subprocess.Popen(
  [process, arg1, arg2],
  env= current_env, cwd=exec_path, stdout=subprocess.PIPE)
当我向子流程发送SIGTERM(来自shell,而不是python)时,就会出现问题

如果我使用
proc.read()

但是,如果我使用
proc.communicate()
,那么python会出现错误。据我所知,无论子进程做什么,这都不会以任何方式影响父进程(python)

我想做的是调用
proc.communicate()
,然后选中
proc.returncode
,这应该表明子进程存在任何问题

我正在使用Python 2.7.3

谢谢

编辑: 另一件需要注意的事情是,这是在一个QThread(PySide.QtCore.QThread)中运行的

EDIT2:

最简单的例子:

该示例在QThread上下文之外正确运行,因此问题似乎与之相关

process.py:

loop.sh


你能添加一个分割故障的玩具示例吗?我在没有PySide的情况下成功地使用了
SIGTERM
/
通信()
/
返回代码
模式,这让我怀疑PySide和
子流程之间可能存在一些奇怪的交互。@Scharron我添加了一个示例。@zigg很可能就是这样,我将在QThread上下文之外尝试相同的示例。@zigg它确实在QThread之外运行没有问题!
class A(QThread):
  def run(self):
    pp = subprocess.Popen(["./loop.sh"], stdout=subprocess.PIPE)
    output = pp.communicate()
    print('Now send SIGTERM to loop.sh and watch me crash')
#!/bin/bash
while true; do : ; done