쉘 A에 속한 프로세스를 일시 중단하고 쉘 B에서 전경화하는 방법이 있습니까?

쉘 A에 속한 프로세스를 일시 중단하고 쉘 B에서 전경화하는 방법이 있습니까?

프로세스를 일시 중단하고 현재 셸의 전경으로 가져오는 방법을 알고 있지만 셸 A에서 실행 중인 프로세스가 있는지 모르겠고 이제 해당 프로세스를 현재 셸 B의 전경으로 가져오고 싶습니다.
세 번째 도구를 사용하지 않고 screen이 작업을 수행할 수 있는 방법이 있습니까?
제 생각에는 포그라운드에서 일시 중지했다가 다시 시작해야 한다고 생각하는데, 어떻게 해야 할지 모르겠습니다.

답변1

이 효과를 얻으려면 일반적으로 다음 두 가지 작업을 수행해야 합니다.

  • 프로세스를 새 셸로 재설정합니다.

    내가 아는 한 기본적으로 이 작업을 수행할 수 있는 방법은 없습니다. 내가 아는 한, UNIX에서 프로세스를 다시 부모로 만드는 방법은 한 가지 뿐이며 원래 부모 프로세스가 기다리지 않고 종료되는 경우에만 발생합니다. 이 경우 프로세스(고아 프로세스)는 init프로세스 ID 1의 상위로 다시 할당됩니다. 그러나 원래 부모 프로세스나 새 부모 프로세스를 종료하고 싶지 않기 때문에 이는 도움이 되지 않습니다 init.

    SIGTSTP권한이 있는 사람은 누구나 및 같은 프로세스에 신호를 보낼 수 있으므로 SIGCONT해당 SIGINT명령을 사용하여 kill해당 신호를 프로세스(또는 프로세스 그룹)에 보내 작업 일시 중지, 계속, 중단과 같은 효과를 시뮬레이션할 수 있습니다. new shell 이를 인식하지 못하고 프로세스 그룹의 상태에 대해 알림을 받지 않으므로 작업 제어 기능을 사용하여 추적할 수 없습니다.

  • 스튜디오를 리디렉션합니다. 프로세스의 stdio가 프로세스가 시작된 터미널에 연결될 수 있으므로 이를 새 셸이 실행 중인 터미널로 전송하고 싶을 수도 있습니다. 원래 출력을 파일이나 다른 위치로 리디렉션하지 않은 경우.

    확실히 이를 수행할 수 있는 방법이 있습니다.

관련 정보