ptyマスター/スレーブペアにファイル記述子のペアを使用するライブラリ(libvte、ターミナルエミュレーションライブラリ)があります。私は自分の使用のためにライブラリからマスターfdを "盗む"ことができなければなりません。(まれに、ZMODEMのサポートを実装するために、 'ネットは端末経由でしかありません。しかし、問題があります。POSIXシステムでのファイル記述子の終了を防止する
libvteに、ファイル記述子を新しいものに変更したいと言うことができますが、使用しているマスターを閉じて、代わりに新しいものを使用しようとします。マスターが閉じたときにスレーブが遠ざかり、これは機能しません。もともと私はをpty masterに使うことができると思っていたので、libvteがPTYマスター上でclose()
を実行したときに、まだ機能するfdを使用していました。それは明らかに間違っています。 FDの
- ブロックlibvteの
read()
事業:は、私はどちらかへの道を見つける必要があります。
は盗む
- FD離れlibvteから、私はそれを使ってやっている時まで(例えば、私は出口にそれを接続してい
rz
プロセスまで)
は、これらのもののいずれかを実行するためにPOSIXシステム上のことが可能です?あるいはlibvte自体にパッチを当てることなく同じことを達成するための他の方法がありますか?私が尋ねる理由は、ソリューションがかなりの数の既存のシステムで動作しなければならないということです。
私はlibvte(とGTK +自身)とPythonでインタフェースしています。しかし、私はPython拡張モジュールを読み込むためにシステムに特権を持つ必要はないので、Python拡張モジュールをC言語でPythonプログラムから呼び出すことはできません。
私はlibvteをforkして自分のやりたいことをやりたいのですが、私のプログラムでそれを配布してもよいでしょう。フォークを維持して立ち往生してください!
Pythonでタグ付けしたくない、またはCですか?がんばろう! – shellter
私は、質問は本当に両方には不可知論的だと思います。もし私が "C"にタグを付けると、それは本当にCの質問ではないと言えるでしょう。それはPythonの質問です); Pythonにタグを付けると、実際にはCレベルまたはシステムコールレベルの問題であると言えるでしょう。 –
「自分の」専門分野を言語でチェックする人には、あなたの質問は決して見られないかもしれません。私はPOSIXの基本的な言語(ほぼ確実)なので、私は 'C'と一緒に行くだろう。 'ファイル記述子'と比較していますか? ;-)?答えが得られない場合は、いつでもPythonに変更することができます。私は私の標準的な '小切手S.O.'に 'C'あいまいな質問で私が見る回答の強さは謙虚である;-)幸運! – shellter