foo
(논의할 필요가 없는 이유로) pty를 할당해야 하는 명령이 있는데 foo
성공했지만 nohup foo
실패했습니다.
pty가 없을 때 pty를 할당하는 가장 간단한 방법은 무엇입니까? screen -D -m foo
과잉인 것 같습니다. an은 (필요한) 종료 코드를 반환하지 않습니다. 종료 코드를 저장하면 작동합니다.
답변1
expect
예를 들어 를 사용하십시오 .
#!/usr/bin/env expect -f
spawn -noecho ssh localhost "sleep 3; false"
catch wait status
exit [lindex $status 3]
답변2
@thrig의 답변이 효과가 있을 수도 있지만 expect
(저는 찬성 투표했습니다), 저는 그렇게 했습니다.작은 수정pty.c
스티븐스 에서 출발UNIX® 환경의 고급 프로그래밍-r
지정된 경우 종료 코드를 반환합니다. 밝혀지다여기. 이렇게 하면 일이 수월하게 끝날 것 같습니다.
답변3
script /dev/null
가장 간단하고 이식성이 뛰어난 솔루션입니다(안드로이드나 비지박스에서는 기본적으로 아직 사용할 수 없지만).
stdin과 stdout이 tty가 아니더라도 잘 작동합니다.