Cでopenptyを使用してptyを作成し、マスター/親とスレーブ/子の間で共有しています。子はfork/execを実行し、ファイル記述子を他のプログラムに渡すことができます。子供にコマンドを注入したいのですが、すぐに渡すと迷子になります。親プロセスから、誰かがstdinからの入力をブロックしていることをどのように知ることができますか?私はたまたまSUSE10に取り組んでいますが、ディストリビューションに依存しないソリューションを好みます。
編集:この質問への答えはまだ私には興味深いですが、問題に関連していない可能性があります。後で説明します。
コードの簡略化されたバージョンは、スクリプトのソースコードを使用し(ヘッダーの一部を修正する必要がある場合があります)、行を追加することです。
char* command = "echo 'Hello World!'\r\n", written = 0;
(void)write(master, command, strlen(command));
(void)write(STDOUT_FILENO, "Sent command\r\n", 14);
ビッグの前に
for (;;) {
主に。
スクリプトからcshを実行していましたが、スクリプトコマンドがガベージをダンプしていることに気付きました(viで表示)。
^[[>0;115;0c
親のstdinに。代わりにbashシェルを実行すると、何もダンプされず、プログラムはコマンドを正常に挿入します。
質問に対する答えについてはまだ興味がありますが、他に何かが起こっているため、明らかに私の問題とは関係がありません。ptyが読み取られているかどうかを確認する方法を誰かが知っている場合は、遠慮なく答えてください。