[ruby-list:48797] setsid(2) と getsid(2)
From:
SATOH Fumiyasu <fumiyas@...>
Date:
2012-06-20 11:38:10 UTC
List:
ruby-list #48797
さとうふみやす @ OSSTech です。 Ruby で Process.setsid (setsid(2)) が失敗します。 $ uname -a Linux sugar 3.2.0-2-amd64 #1 SMP Mon Jun 11 17:24:18 UTC 2012 x86_64 GNU/Linux $ ruby1.8 -e "Process.setsid" ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux] -e:1: undefined method `getsid' for Process:Module (NoMethodError) $ ruby1.9.1 -e "Process.setsid" ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] -e:1:in `<main>': undefined method `getsid' for Process:Module (NoMethodError) Perl や setsid(1) では問題ありません。 $ perl -e 'use POSIX; POSIX::setsid || die "$!"' $ setsid true setsid(2) によると、EPERM になるのは呼び出したプロセスが既に プロセスリーダーの場合、と記載されています。それを確かめたくて Ruby で getsid(2) 相当で確認しようと思ったのですが、Process.getsid はないようです。需要がないからでしょうか? $ ruby1.9.1 -e 'p Process.getsid' -e:1:in `<main>': undefined method `getsid' for Process:Module (NoMethodError) それはともかく、Ruby プロセスの起動から終了までのシステムコール トレースを見たのですが、プロセスリーダーになっている様子が ありません。上記のように Process.setsid が失敗する原因は 何かわかりますでしょうか。 -- -- Name: SATOH Fumiyasu (fumiyas @ osstech co jp) -- Business Home: http://www.OSSTech.co.jp/ -- GitHub Home: https://GitHub.com/fumiyas/