プロセスの対話性をプログラムで決定できますか?

プロセスの対話性をプログラムで決定できますか?

スクリプトや他の言語を使用して、実行中の特定のプロセスが対話型であるか、単にデーモンのようなもの (つまり、実際のデーモン、または など) であるかを判断することは可能ですかtail -f?

もしそうなら、どうやって?

複数のプラットフォームで可能ですか (私は bash を最も頻繁に使用しますが、他のシェル (PowerShell も含む) でのソリューションも歓迎します)?

答え1

他の回答に対するあなたのコメントに基づくと、あなたが求めているのは非常に難しいです。

アプリが接続するライブラリを確認し、それが画面制御 (例: ncurses) である場合は、おそらく対話型です。ただし、特定の実行状況では、これらは「非対話型 (定義による)」で実行される可能性があります。

一番良い方法は、strace を使用することだと思います。strace は、アプリが使用するシステムコールを表示します。tty に接続された fd から読み取る場合は、対話型です。

答え2

質問を正しく理解していれば、対話型プロセスには tty が関連付けられているはずです。

Linux システムでは、次のようにするとすべての対話型プロセスが表示されます。

ps -e | grep pts

関連情報