可以透過程式設計方式確定進程的互動性嗎?

可以透過程式設計方式確定進程的互動性嗎?

是否可以tail -f使用腳本或任何其他語言來確定給定的運行進程是互動的還是僅僅是類似守護進程的(即實際的守護進程、或類似的進程)?

如果是這樣,怎麼辦?

是否可以在多個平台上使用(我最常使用 bash,但其他 shell 中的解決方案 - 甚至 PowerShell - 也將受到讚賞)?

答案1

根據您對其他答案的評論,您的要求非常困難。

您可以檢查應用程式連接到的庫,如果它們是螢幕控制(例如 ncurses),則它可能是互動的。儘管這些可以在某些運行情況下運行“非互動式(根據您的定義)”。

我認為你能做的最好的事情就是使用 strace,它會向你顯示應用程式使用的系統呼叫。如果它從附加到 tty 的 fd 讀取,那麼它是互動的。

答案2

如果我正確理解你的問題,互動式流程應該有一個與之關聯的 tty。

Linux 系統上的以下內容應該為您提供所有互動過程:

ps -e | grep pts

相關內容