¿Se puede determinar programáticamente la interactividad de un proceso?

¿Se puede determinar programáticamente la interactividad de un proceso?

¿Es posible determinar si un proceso en ejecución determinado es interactivo o simplemente similar a un demonio (es decir, un demonio real, tail -fo algo similar) utilizando secuencias de comandos o cualquier otro lenguaje?

¿Si es así, cómo?

¿Es posible en más de una plataforma (yo uso bash con mayor frecuencia, pero también se agradecerían soluciones en otros shells, incluso PowerShell)?

Respuesta1

Según tu comentario a la otra respuesta, lo que estás pidiendo es muy difícil.

Puede verificar las bibliotecas a las que se conecta la aplicación y, si son control de pantalla (por ejemplo, ncurses), probablemente sean interactivas. Aunque estos podrían ejecutarse "no interactivos (según su definición)" en determinadas situaciones de ejecución.

Creo que lo mejor que puedes hacer es usar strace, que te mostraría las llamadas al sistema que usa la aplicación. Si se lee desde un fd adjunto a un tty, entonces es interactivo.

Respuesta2

Si entiendo su pregunta correctamente, un proceso interactivo debería tener un tty asociado.

Lo siguiente en un sistema Linux debería brindarle todos los procesos interactivos:

ps -e | grep pts

información relacionada