• 265阅读
  • 10回复

[提问]QProcess父进程结束,子进程仍存在? [复制链接]

上一主题 下一主题
离线lf460
 

只看楼主 倒序阅读 楼主  发表于: 11-30
大家好,我用QProcess启动一个子进程(start方式),当父进程正常结束时,子进程也可以正常结束。但是,当我用资源管理器杀死父进程时,子进程仍然存在。
求助:如何保证在杀死父进程后,子进程也自动结束呢?
离线小韩老师

只看该作者 1楼 发表于: 12-01
那你就子进程探测父进程,父进程不存在就自己结束。
离线stlcours

只看该作者 2楼 发表于: 12-03
QProcess::start函数就可以
离线青空飞羽

只看该作者 3楼 发表于: 12-04
Windows下程序中貌似可以捕获程序异常退出信号,任务管理器直接杀死进程应该是程序异常退出吧,父进程在异常信号捕获函数里结束子进程
离线fxbjsx

只看该作者 4楼 发表于: 12-04
参考下chrome多进城退出方案,chrome就算你用任务管理器强制退出父进城,它也可以自动杀死子进城
离线hehui

只看该作者 5楼 发表于: 12-04
父子之间加心跳通信,比如QLocalServer和QLocalSocket,父退出后子检测超时后也退出
离线hehui

只看该作者 6楼 发表于: 12-04
另外可以用纯Windows API检测进程列表,查到父进程退出子进程跟着退,这个要麻烦一些
离线stlcours

只看该作者 7楼 发表于: 12-04
回 hehui 的帖子
hehui:父子之间加心跳通信,比如QLocalServer和QLocalSocket,父退出后子检测超时后也退出 (2018-12-04 13:54) 

QLocalServer和QLocalSocket 好像只能单向通讯,这意味着两个程序都要建立QLocalServer?
另外,心跳是使用Timer进行控制吗?
离线hehui

只看该作者 8楼 发表于: 12-05
回 stlcours 的帖子
stlcours:QLocalServer和QLocalSocket 好像只能单向通讯,这意味着两个程序都要建立QLocalServer?
另外,心跳是使用Timer进行控制吗? (2018-12-04 17:01)

一个QLocalserver一个用QLocalSocket就行了,跟网络通信是一样的
用Timer定时发包检测,或者检测socket断线
离线stlcours

只看该作者 9楼 发表于: 12-10
回 hehui 的帖子
hehui:一个QLocalserver一个用QLocalSocket就行了,跟网络通信是一样的
用Timer定时发包检测,或者检测socket断线 (2018-12-05 07:57) 

不好意思,麻烦问一下检测socket断线的话应该怎么做呢?
离线hehui

只看该作者 10楼 发表于: 12-11
回 stlcours 的帖子
stlcours:不好意思,麻烦问一下检测socket断线的话应该怎么做呢? (2018-12-10 17:15) 

QLocalSocket有个disconnected()信号,用它就行了
快速回复
限100 字节
 
上一个 下一个