Feature #6757

[PATCH] Add Process.getsid

Added by Fumiyasu SATOH over 1 year ago. Updated over 1 year ago.

[ruby-dev:45977]
Status:Closed
Priority:Normal
Assignee:Motohiro KOSAKI
Category:ext
Target version:2.0.0

Description

setsid(2) に相当する Process.setsid はありますが、getsid(2) に
相当する Process.getsid がありません。

Process.getsid を追加するパッチを添付します。

0001-process.c-add-Process.getsid.patch Magnifier (2.34 KB) Fumiyasu SATOH, 07/20/2012 11:47 AM

Associated revisions

Revision 37825
Added by Motohiro KOSAKI over 1 year ago

  • process.c (proc_getsid): adds new method for getting session id. Contributed from fumiyas (Fumiyasu SATOH). Thank you! [Feature #6757]
  • configure.in: adds getsid check.
  • test/ruby/testprocess.rb (TestProcess#testsetsid): new test for the above.
  • NEWS: news for the above.

History

#1 Updated by Koichi Sasada over 1 year ago

  • Assignee set to Yusuke Endoh

遠藤さん,どうしたもんでしょうか.

#2 Updated by Yusuke Endoh over 1 year ago

  • Status changed from Open to Assigned
  • Assignee changed from Yusuke Endoh to Akira Tanaka

こういうシステム系の機能は判断する自信ないです。
一家言ありそうな akr さんに振ってみます。

テストがないですが、意味のあるテストは書けないものですかね。

Yusuke Endoh mame@tsg.ne.jp

#3 Updated by Motohiro KOSAKI over 1 year ago

こういうシステム系の機能は判断する自信ないです。
一家言ありそうな akr さんに振ってみます。

こういう単に情報取得するだけの機能はノータイムで入れていいという認識。
逆にちゃんと考えないといけないのは、Cと同じ使い方をどうやっても提供できないケースで例えば

・IO: Ruby独自のバッファリングとエンコードの話があるのでsysread/syswriteが混ぜるな危険になる
・fork: ruby scriptをasync signal safeにする方法はないので、Cと同じ使い勝手を提供できない
・Trap: 同様に生のシグナルハンドラをRubyスクリプトでは書けないので、Cのシグナルハンドラと
RubyのTrapハンドラは似て非なるもの

みたいなやつら。このケースは入れてしまっていいという認識。
しかし、あらためて見なおしてみると setsidとgetsidは本来 Process::Sys に入っているべき生の
操作なんじゃないかという気がしてきました。

ProcessとProcess::Sysの使い分けの指針は今どうなってるんでしょう?

テストがないですが、意味のあるテストは書けないものですかね。

DLかsyscallつかって生のgetsid() 呼んで結果を比較する?

#4 Updated by Yusuke Endoh over 1 year ago

  • Assignee changed from Akira Tanaka to Motohiro KOSAKI

kosaki さんが accept 気味なので、kosaki さんがよければ入れてください。
嫌なら next minor にしといてください。

Yusuke Endoh mame@tsg.ne.jp

#5 Updated by Motohiro KOSAKI over 1 year ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r37825.
Fumiyasu, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • process.c (proc_getsid): adds new method for getting session id. Contributed from fumiyas (Fumiyasu SATOH). Thank you! [Feature #6757]
  • configure.in: adds getsid check.
  • test/ruby/testprocess.rb (TestProcess#testsetsid): new test for the above.
  • NEWS: news for the above.

#6 Updated by Motohiro KOSAKI over 1 year ago

r37825 で入れました。テストの追加と、引数を省略した時にカレントプロセスとみなす処理の追加を行いました(ほとんどのケースでカレントプロセスにしか興味ないはず)

佐藤さん、ありがとうございました。

Also available in: Atom PDF