1

passwdsshのようにリダイレクトされた stdin パイプではなく、tty からのみユーザー入力を読み取るプログラムを作成したいと考えています。アプローチはありますか?

どうもありがとう

4

2 に答える 2

2

/dev/tty直接開いてみてください。stdinそれが、リダイレクトをバイパスできることを確実に知っている唯一の方法です。

/dev/ttyは通常、実際のtty デバイスへのシンボリック リンクです。これは、システムの奇妙で素晴らしい設定方法に応じて、必要に応じて、/dev/consoleまたは/dev/tty24ほとんど何でもかまいません。コマンドは、ttyそれがどれであるかを伝えることができるはずです(シンボリックリンク自体を でリストしますls -al /dev/tty)。

ただし、入力用に開いている限り、dev/ttyリダイレクトされた可能性のある標準入力ストリームではなく、端末から入力を取得する必要があります。

于 2010-05-05T08:33:25.083 に答える
1

isatty(man 3 isatty) を fileno() と組み合わせて試すことができます。

   #include <unistd.h>

   int isatty(int fd);
于 2010-05-05T09:39:20.370 に答える