可以通过编程方式确定流程的交互性吗?

可以通过编程方式确定流程的交互性吗?

是否可以tail -f使用脚本或任何其他语言来确定给定的正在运行的进程是否是交互式的或者仅仅是类似守护进程的(即实际的守护进程,或,或类似的)?

如果是,怎么办?

是否可以在多个平台上实现(我最常使用 bash,但其他 shell 中的解决方案 - 甚至 PowerShell - 也会受到欢迎)?

答案1

根据您对其他答案的评论,您的要求非常困难。

您可以检查应用程序所连接的库,如果它们是屏幕控制(例如 ncurses),则可能是交互式的。尽管在某些运行情况下,它们可能会以“非交互式(根据您的定义)”运行。

我认为您能做的最好的事情是使用 strace,它会向您显示应用程序使用的系统调用。如果它从连接到 tty 的 fd 读取,那么它是交互式的。

答案2

如果我正确理解了你的问题,那么交互式过程应该有一个与之关联的 tty。

Linux 系统上的以下内容应为您提供所有交互过程:

ps -e | grep pts

相关内容