账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何终止子程序的执行
    55
    0

    1.有三个py文件并用pyinstaller进行封装a.exe;b.exe;c.exe
    a.exe是一个图形化界面程序,通过subprocess调用b.exe,代码如下:

    child = subprocess.Popen("b.exe %s -d %s -t %s "%(value,key1,key2))

    b.exe是主程序,在b.exe得到pid并通过subprocess传递给c.exe,代码如下:

    pid = os.getpid()
    ch = subprocess.Popen("c.exe %d"%pid)
    

    c.exe是一个监控程序,用于监控主程序b.exe是否在正常运行。

    现在的问题是,我在a.exe这个图形化界面中按下一个stop按钮,需要终止b.exe。

    但是封装之后,会产生两个b.exe进程,child返回的是内存小的那个进程,只杀死这个进程并不能终止b.exe的运行。

    请问各位大神,有没有其他的好方法呢?

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在大多数编程语言中,你无法直接终止子程序的执行。你只能终止父程序的执行,而不能终止子程序的执行。

      然而,你可以在某些情况下修改子程序的行为,使其能够在父程序停止时自动停止。这通常在处理某些类型的错误或异常时发生,或者在某些情况下,你希望子程序在遇到错误时仍然可以继续执行。

      以下是一个在Python中使用subprocess模块终止子程序的例子:

      ```python import subprocess

      def main(): # 执行子程序 subprocess.call(['subscript', 'script_name']) # 在子程序中处理异常或终止子程序 if some_condition: subprocess.call(['kill', '0']) # 或者,你可以继续执行子程序,直到主程序停止 main()

      if name == 'main': main() ```

      在这个例子中,subscriptscript_name是子程序的命令和名称,some_condition是子程序可能遇到的错误或异常的条件。如果some_condition为真,subprocess.call(['kill', '0'])将杀死子程序的PID,这将终止子程序的执行。

      请注意,这只是一个基本的例子,实际的终止子程序的方法可能根据你的具体需求和编程语言的特性而异。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部