加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 正确终止衍生的runghc进程

发布时间:2020-12-15 21:43:43 所属栏目:安全 来源:网络整理
导读:用像这样的脚本 -- foo.hsimport System.Processimport Control.Concurrentmain = do a - runCommand "yes" threadDelay 1000000 terminateProcess a 我得到了预期的行为 – 是的,直到threadDelay启动为止.但如果我用“runghc bar.hs”替换“yes”,那么bar.h
用像这样的脚本

-- foo.hs
import System.Process
import Control.Concurrent

main = do
   a <- runCommand "yes"
   threadDelay 1000000
   terminateProcess a

我得到了预期的行为 – 是的,直到threadDelay启动为止.但如果我用“runghc bar.hs”替换“yes”,那么bar.hs就是

import Control.Monad
import Control.Concurrent

main = forever (print 5 >> threadDelay 100000)

…然后bar.hs永远运行.是否有更好的方法让runghc终止?

编辑:
这种行为是在linux上

解决方法

这是非常有趣的行为.正在发生的是,runghc产生了自己的子进程,你杀死了runghc进程而不是孩子.使用 interruptProcessGroupOf代替terminateProcess似乎可以解决这个问题,但我真的不知道这是否是一个可靠/正确的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读