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

如何在ruby中控制(启动/终止)后台进程(服务器应用程序)

发布时间:2020-12-16 19:22:31 所属栏目:百科 来源:网络整理
导读:我正在尝试通过 ruby为集成测试(实际规格)设置一个服务器,但无法弄清楚如何控制该过程. 所以,我想要做的是: 为我的gem执行rake任务,执行集成规范 任务需要首先启动服务器(我使用webrick),然后运行规范 执行规范后,它应该杀死webrick所以我没有留下一些未使
我正在尝试通过 ruby为集成测试(实际规格)设置一个服务器,但无法弄清楚如何控制该过程.

所以,我想要做的是:

>为我的gem执行rake任务,执行集成规范
>任务需要首先启动服务器(我使用webrick),然后运行规范
>执行规范后,它应该杀死webrick所以我没有留下一些未使用的后台进程

webrick不是必需的,但它包含在ruby标准库中,因此能够使用它会很棒.

希望有人能够提供帮助!

PS.我正在linux上运行,因此将这项工作用于Windows并不是我的主要优先事项(现在).

解决方法

标准方法是使用系统函数fork(复制当前进程),exec(用可执行文件替换当前进程)和kill(向进程发送信号以终止它).

例如 :

pid = fork do
  # this code is run in the child process
  # you can do anything here,like changing current directory or reopening STDOUT
  exec "/path/to/executable"
end

# this code is run in the parent process
# do your stuffs

# kill it (other signals than TERM may be used,depending on the program you want
# to kill. The signal KILL will always work but the process won't be allowed
# to cleanup anything)
Process.kill "TERM",pid

# you have to wait for its termination,otherwise it will become a zombie process
# (or you can use Process.detach)
Process.wait pid

这适用于任何类Unix系统. Windows以不同的方式创建进程.

(编辑:李大同)

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

    推荐文章
      热点阅读