ruby - ruby 中的命令行参数可以被删除吗?

标签 ruby unix argv

出于安全原因,我想在解析命令行参数后删除它们:

login.rb --user me --password wombats

我尝试过 ARGV.clear 和 $*.clear

对 ARGV 或 $* 的更改均不会反射(reflect)在 ps 中

最佳答案

您可以通过更改 $PROGRAM_NAME 变量来更改 Ruby 进程的名称(如 ps(1) 所示)。下面是一个有意循环的示例程序:

#!/usr/bin/env ruby

puts $PROGRAM_NAME
$PROGRAM_NAME = "a ruby process"

loop { }

当它像这样运行时:

$ ./loop.rb password
./loop.rb

它在 ps 中显示“一个 ruby​​ 进程”:

$ ps aux | grep ruby
stuart         85292  98.9  0.1  2439468   4340 s004  R+    8:43PM   0:02.96 a ruby process  
stuart         85341   0.0  0.0  2432768    600 s011  S+    8:43PM   0:00.00 grep --color ruby

因此,您可以使用 $PROGRAM_NAME 变量来准确更改通过 ps 显示进程的方式。

关于ruby - ruby 中的命令行参数可以被删除吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802102/

相关文章:

linux - Linux 中登录的唯一用户列表

PHP如何获取精确的argv(当前命令的精确参数)?

c - C程序中的参数类型区分

Python 2.7 Argparse 是或否输入

linux - 如何找出我属于哪些组,必须使用/etc/group来完成

c++ - OpenCV中int main(int argc, char** argv)中argc和argv的意义

Ruby - 在 Iterator each 中工作 "yield"

jquery - Rails 嵌套资源 - 使用 form_for 部分创建和编辑 2 个级别

ruby-on-rails - 正确的 Rails 模型命名空间

ruby - Rake 不知道如何构建任务 : default or minitest