脚本在运行的时候改个进程名,很有用。
否则ruby写的脚本一堆ruby在进程表里面,python写的脚本一堆python在进程表里面,会把人搞晕。
这需要调用libc中的prctl函数,于是就涉及到如何调用C 库了。
python版本已经有很多了。这里给出两个ruby的版本。
用dl的:
  1. require 'dl/import'

  2. module JxLib
  3. extend DL::Importer
  4. dlload '/lib/libc.so.6'
  5. extern "int prctl(int,char *,unsigned long,unsigned long,unsigned long)"
  6. end

  7. PR_SET_NAME = 15
  8. JxLib.prctl(PR_SET_NAME,"new process name ",0,0,0)
  9. puts "run prctl"
    sleep 10000
用ffi的:
  1. require 'ffi'

  2. module MyLib
  3. extend FFI::Library
  4. ffi_lib 'c'
  5. attach_function :prctl, [ :int,:string,:ulong,:ulong,:ulong ], :int
  6. end

  7. MyLib.prctl(15,"new process name",0,0,0)

  8. puts "run prctl"
  9. sleep 10000


09-04 08:36