haskell-ja > Archives > 2011/12/16

2011/12/16 00:36:51 UTCcutsea110@twitter
#
日刊 関数プログラミング 紙が更新されました! http://t.co/VgsU1ds8 ▸ 本日トップニュースを提供してくれたみなさん: @tanakh @xhl_kogitsune @tooru @sbwhitecap
2011/12/16 06:19:29 UTCnobsun
#
【おしえて君】端末を指定してその標準出力と標準入力を横取りするのってどうやればいいのでしょう。特に端末側の入力を横取りしたいのですが、cat < /dev/pty/2 とかやっても、/dev/pty/2への入力の一部しかとれないように見えます。なにかよい方法はあるでしょうか。
2011/12/16 06:24:20 UTCshiro
#
既にプロセスにつながっちゃってる端末を横取りするのって出来たっけ? これからプロセスを起動するならともかく。
#
まあデバッガをアタッチしてシステムコールをフックするとかすれば出来なくはないと思うけど、もっとお手軽にってことだよね。
2011/12/16 06:26:45 UTCnobsun
#
cat < /dev/pts/6 のようにすると、すでに起動している/dev/pts/6の端末での入力の一部が cat < /dev/pts/6 を起動したシェルのある端末で表示されるようですが、とりこぼしがあるのでなんとかしたいなぁと。
2011/12/16 06:28:44 UTCshiro
#
む、ひとつのデバイスからの入力をふたつのプロセスが取り合うことになるので、先着順になるんじゃないかと思ってましたが、両方にゆくこともある?
#
先着順っていうのはプロセススケジューリングとの兼ね合いってことで、どっちにゆくかは決定的でないってことです。
2011/12/16 06:29:57 UTCnobsun
#
実際にはshellではなくプログラムから操作したいなぁと。
#
両方に来ることはないみたいです。ああ、本当にとりあいになるのか。
2011/12/16 06:38:52 UTCnobsun
#
cat < /proc/9833/fd/1 でも同じことなんだ。ふむ。プロセスを自分で起動しないとだめなんですね。
2011/12/16 06:44:11 UTCshiro
#
まあ普通の方法ならそうですね。自分でpty作ってデータを流しつつ覗き見。