bash -i 동작 및 "내 터미널이 왜 작동하지 않나요?"

bash -i 동작 및 "내 터미널이 왜 작동하지 않나요?"

이것은 내가 시도한 모든 배포에서 발생합니다.

$ 고양이 |
bash-3.2$ ls
풍부한 바
bash-3.2$

이제 세션이 일시 중지되었습니다. 즉, 당신은 얻습니다하나명령을 실행하면 터미널 창을 거의 닫아야 합니다. SIGTERM(일명 ^C)은 bash에 의해 감지되지만 작업 쉘로 돌아갈 수는 없습니다.

나는 이것이 bash가 tty 제어를 위해 cat과 싸우게 하는 것과 관련이 있다고 추측 -i하지만 명확한 정보를 찾을 수 없습니다. 무슨 일인지 설명해 줄 수 있는 사람 있나요? 실행 중인 프로그램을 execlp("/bin/bash", "bash", "-i")중단 없이 자동으로 시작하는 방법은 무엇입니까? expecttty의 예외를 처리하려면 유사한 프로그램을 작성해야 합니까 ?

답변1

짧은 답변: 예, Expect를 사용해야 합니다.

에 관해서는실패합니다. 동작에 따라 bash -iopen readline( 을 사용하더라도 --noediting)은 파이프에서 상당히 나쁘게 동작합니다. 또한 stdout터미널 모드(비차단 모드 포함)를 설정하는 대신 통과하는 것으로 보이며 stdin이는 대부분의 제어 문자의 예상 동작을 잃게 됨을 의미합니다. (단, tty를 직접 읽지는 않습니다.)

참고 사항: 대신 ^C보내세요 . 그러나 둘 다 대화형( ) 모드 에서 멈춰 있습니다 .SIGINTSIGTERM-iSIGHUP

관련 정보