Kann die Interaktivität eines Prozesses programmgesteuert bestimmt werden?

Kann die Interaktivität eines Prozesses programmgesteuert bestimmt werden?

tail -fIst es möglich , mithilfe von Skripting oder einer anderen Sprache zu bestimmen, ob ein aktueller laufender Prozess interaktiv oder lediglich daemonartig ist (also ein tatsächlicher Daemon oder ein , oder ähnliches)?

Wenn das so ist, wie?

Ist dies auf mehr als einer Plattform möglich (ich verwende am häufigsten Bash, aber Lösungen in anderen Shells – sogar PowerShell – wären auch willkommen)?

Antwort1

Basierend auf Ihrem Kommentar zu der anderen Antwort ist das, was Sie verlangen, sehr schwierig.

Sie können die Bibliotheken überprüfen, mit denen die App eine Verbindung herstellt. Wenn es sich um Bildschirmsteuerungen (z. B. ncurses) handelt, sind diese wahrscheinlich interaktiv. Allerdings könnten diese in bestimmten Ausführungssituationen „nicht interaktiv (nach Ihrer Definition)“ ausgeführt werden.

Ich denke, das Beste, was Sie tun können, ist, strace zu verwenden. Dadurch werden Ihnen die Systemaufrufe angezeigt, die die App verwendet. Wenn es von einem FD liest, das an ein TTY angeschlossen ist, ist es interaktiv.

Antwort2

Wenn ich Ihre Frage richtig verstehe, sollte einem interaktiven Prozess ein TTY zugeordnet sein.

Im Folgenden finden Sie alle interaktiven Prozesse auf einem Linux-System:

ps -e | grep pts

verwandte Informationen