問題タブ [input-buffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perl IPC::Run3: stdin の pty を子プロセスにエミュレートする方法は?
これは、IPC::Open3 に対するフォローアップの質問であり、子供が入力を待っているかどうかを判断しますが、明らかに関係はありません。
次のサンプル コードを見てください。
上記のコードcommand
は別の perl スクリプトです。子スクリプトはwho -m
、端末から stdin の所有者を見つけるために呼び出します。これは、root または別の汎用システム ユーザーを使用して子スクリプトまたは親スクリプトが呼び出された場合に使用することを目的としています。
親から呼び出されたときに子から取得するエラーは次のとおりです。
以下の子コード。
354行目あたりのコード:
上記のコードは、コマンドラインから子スクリプトを呼び出すと問題なく動作しますwho -m
が、ターミナルの stdin の所有者を確認しようとしており、ターミナルが親スクリプトに置き換えられているため、呼び出す方法を見つける必要があると思います親から実行する場合は、エミュレートされた pty を使用して who -m を実行します。子、親、またはその両方を変更するかどうかは問題ではありません。両方を変更できるからです。
who -m
だから私の質問は、どうすれば親の中で子を実行し、それでも子に与えられた出力に頼ることができますか?
編集:池上は、彼の回答のコメントで最良の解決策を提供しました。質問には答えませんが、私の問題は解決します。
私の ssh デーモンは env var
SSH_TTY
を設定するので、perl -MFile::stat -E'say scalar(getpwuid(stat($ENV{SSH_TTY})->uid))'
.scalar(getpwuid($>))
設定されていない場合のデフォルト。
c++ - C++ メニュー システム: 矢印キーを押したときに入力バッファーを削除する方法
メニュー付きのプログラムを作ることができました。最初は、プログラムはスムーズに実行されています。プログラムの特定の時点で、ユーザーが何かを入力し始めてからメニューを再度ナビゲートすると、問題が発生し始めます。
ENTERメニューでキーを押したときに、ユーザーが以前に入力した整数/文字を出力することがあります。
で入力をブロックすることができましたcin.ignore()
。LEFTしかし、ユーザーが矢印キーと矢印キーを押すたびに、入力バッファー内の (余分なのかゴミなのかわかりません) の表示を削除するにはどうすればよいRIGHTですか? UPまたは、DOWN矢印キー用のものさえあると思いますか?
プログラム内で使用したいくつかの関数のコード スニペット。関数 menu_std():
関数 menu_yn():
関数の検証()
問題のスクリーンショット:
メニューでEnterキーを押すたびに数字が表示されます。ユーザーがEnterキーを押す前に矢印キーを押すたびに発生すると思われます。