¿Existe una forma POSIX estándar (ish) para determinar si mi proceso (estoy escribiendo esto como un script de Ruby ahora, pero tengo curiosidad por múltiples entornos, incluidas las aplicaciones de línea de comandos Node.js y ISO C) se está ejecutando en una terminal interactiva, en lugar de, por ejemplo, cron o ejecución desde otra herramienta, o ... y así sucesivamente.¿Cómo puedo determinar si mi proceso se está ejecutando de forma interactiva?
Específicamente, necesito adquirir la entrada del usuario en determinadas situaciones, y necesito a fallar fatalmente si es determinable no poder (es decir, siendo dirigido por cron.) Puedo hacer esto con una variable de entorno, pero me prefiero algo más estándar, si puedo.
Para cualquiera que haya venido buscando Windows, pruebe System.Environment.UserInteractive para .Net o GetUserObjectInformation para win32, que fallará en los procesos no interactivos. – Mitch
Podrías haber agregado eso como una respuesta real y obtener reputación de él. (= – ELLIOTTCABLE