프로세스의 상호작용성을 프로그래밍 방식으로 결정할 수 있습니까?

프로세스의 상호작용성을 프로그래밍 방식으로 결정할 수 있습니까?

주어진 실행 프로세스가 대화형인지 아니면 단순히 데몬과 유사한지(예: 실제 데몬 tail -f또는 유사) 스크립트나 다른 언어를 사용하여 결정하는 것이 가능합니까?

그렇다면 어떻게?

둘 이상의 플랫폼에서 가능합니까? (나는 bash를 가장 자주 사용하지만 다른 셸, 심지어 PowerShell의 솔루션도 괜찮을 것입니다.)

답변1

다른 답변에 대한 귀하의 의견에 따르면 귀하가 요구하는 것은 매우 어렵습니다.

앱이 연결되는 라이브러리를 확인할 수 있으며, 화면 제어(예: ncurses)라면 아마도 대화형일 것입니다. 특정 실행 상황에서는 '비대화형(사용자 정의에 따라)'으로 실행될 수 있습니다.

내 생각에 당신이 할 수 있는 최선의 방법은 앱이 사용하는 시스템 콜을 보여주는 strace를 사용하는 것입니다. tty에 연결된 fd에서 읽는 경우 대화형입니다.

답변2

귀하의 질문을 올바르게 이해했다면 대화형 프로세스에는 이와 관련된 tty가 있어야 합니다.

Linux 시스템에서 다음은 모든 대화형 프로세스를 제공해야 합니다.

ps -e | grep pts

관련 정보