在OSx中更改Ruby进程名称

4
我正在尝试为我的Ruby程序命名。我在运行OSx上的Ruby版本2.1.2-p95,并查看Activity Monitor,我认为它使用top,但我不确定。
我尝试过 $0 = "My process name"$0 = "My process name\0"$PROGRAM_NAME = "My process name"$0 = "my_process_name",但似乎都没有起作用。
我还尝试了:
require "fiddle"
def set_process_name(name)
    Fiddle::Function.new(
        DL::Handle["prctl"], [
            Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP,
            Fiddle::TYPE_LONG, Fiddle::TYPE_LONG,
            Fiddle::TYPE_LONG
        ], Fiddle::TYPE_INT
    ).call(15, name, 0, 0, 0)
end
set_process_name("My process name")

我希望有一种跨平台的方法来实现这个,但现在我主要是想找一种适用于OSx的方法。
类似的问题没有满意的答案: 更改top中ruby进程的名称

你想要更改的是特定的top/activity monitor输出还是来自ps的输出? - Frederick Cheung
我希望它在“活动监视器(Activity Monitor)”中更改,因为这是大多数 Mac 用户查看系统状态的地方。 - Automatico
很遗憾,Process.setproctitle似乎只能做ps。 - Frederick Cheung
是的,我自己发现了。不幸的是,我已经为此苦苦挣扎了一段时间。 - Automatico
你已经找到解决方案了吗?我在Thoughtbot的gitsh(https://github.com/thoughtbot/gitsh/issues/41)和Ruby问题跟踪器(https://bugs.ruby-lang.org/issues/10090)中发现了一些相关问题。 - Omar Bahareth
我从来没有找到解决办法:( 老实说,我一直在忽略它。在Windows上,你可以这样做 START "My name" ruby.exe whatever.rb,但我不知道如何在UNIX上实现这一点 :( - Automatico
1个回答

2

我尚未找到一种跨平台的方法来实现这一点。最接近的方法是使用Process.setproctitle,但在OSX上它只适用于命令行,而不适用于Activity Monitor应用程序。

对于OSX,您需要将脚本打包在一个应用程序中,并在Info.plist文件中设置进程名称


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接