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

ruby – Popen得到了新进程的pid

发布时间:2020-12-16 23:02:38 所属栏目:百科 来源:网络整理
导读:我想在后台运行一些应用程序,然后通过pid杀死它. pipe = IO.popen("firefox 'some_url' 21 ")pipe.pid 这段代码启动firefox并返回一些pid,但不幸的是它不是firefox的pid. pipe = IO.popen("firefox")pipe.pid 这段代码启动firefox并返回mi一些pid,firefox的p
我想在后台运行一些应用程序,然后通过pid杀死它.
pipe = IO.popen("firefox 'some_url' 2>&1 &")
pipe.pid

这段代码启动firefox并返回一些pid,但不幸的是它不是firefox的pid.

pipe = IO.popen("firefox")
pipe.pid

这段代码启动firefox并返回mi一些pid,firefox的pid.
是否有任何解决方案来启动外部应用程序并获得其pid? Firefox只是例如它可以是任何其他应用程序.我也试过像libs那样:Open3和Open4,但似乎效果相同.
我也想知道’$!’ bash变量对此有好的解决方案吗?在后台运行一些东西并读’$!’,你怎么看?

解决方法

由于您在后台运行它(命令&),您将获得解释器的PID:
>> pipe = IO.popen("xcalc &")
>> pipe.pid 
=> 11204

$ps awx | grep "pts/8"
11204 pts/8    Z+     0:00 [sh] <defunct>
11205 pts/8    S+     0:00 xcalc

放弃&amp ;:

>> pipe = IO.popen("xcalc")
>> pipe.pid
=> 11206

$ps awx | grep "pts/8"
11206 pts/8    S      0:00 xcalc

有关重定向的其他问题,请参阅@kares的回答

(编辑:李大同)

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

    推荐文章
      热点阅读