2011-09-19 68 views
7

我想通过命令行为我的pinger程序提供反馈,并使用ps ax查看它。我发现SO q。但如何通过Ruby设置命令行值以通过PS查看状态?

.... 
ARGV[0] = "Hello!" # does nothing 

我通过ruby ./pinger

+0

我怀疑你可以做的不w/o修改Ruby本身。 –

+0

@Dave:你可以赋值给'$ 0',这就是C的'argv [0]'的Ruby等价物,Ruby的'ARGV'只保存参数。 –

+0

啊,有趣。 –

回答

9

分配启动脚本$0代替。例如,如果我开始irb

$ ps | egrep 'irb|pancakes' 
3119 ttys000 0:01.02 irb 
3131 ttys001 0:00.00 egrep irb|pancakes 

,然后通过在irb

>> $0 = 'pancakes' 

再换另一端:

$ ps | egrep 'irb|pancakes' 
3119 ttys000 0:01.07 pancakes 
3135 ttys001 0:00.00 egrep irb|pancakes 

你可以用这个小脚本检查好:

#!/usr/bin/env ruby 
$0 = 'pancakes' 
sleep 10 

运行,跳到另一个终端,做一个ps | grep pancakes,你应该看到一个煎饼过程。

+0

优秀。谢谢! –

+2

+1用于煎饼。 –

+1

@ rm-rf:我厌倦了* foo *,因此我切换到了[*煎饼*](http://www.youtube.com/watch?v=dJUvPZI3Cr4)。此外,我喜欢煎饼:) –