2017-09-04 20 views
0

sshpass mailing list (및 stack overflow)에서 제공되는 질문. HP-UX에서는 Sshpass가 작동하지 않습니다.HPUX에서 제어로 TTY를 채택하는 방법

-u [/tmp/sshpass][14066]{3783827} fork() ................... (returning as child ...) ......... = 14064 {3783821} 

자식 프로세스가 14066.

-u [/tmp/sshpass][14066]{3783827} setpgrp3(2)................................................. [entry] 
-u [/tmp/sshpass][14066]{3783827} setpgrp3(2)................................................. = 14066 
새로운 세션을 시작

이며, 이전 TTY

-u [/tmp/sshpass][14066]{3783827} open(0x400132d0, O_RDWR, 01210)............................. [entry] 
-u [/tmp/sshpass][14066]{3783827} open("/dev/pts/5", O_RDWR, 01210)........................... = 6 
에서 분리 : 트러스 출력을 보면

, 나는 다음을 참조

O_RDWR 플래그가있는/dev/pts/5를 엽니 다. Posix에 따르면,이 시점에서 pts/5가 새로운 프로세스의 제어 터미널이되어야한다고합니다. 이것은 분명히 일어나지 않습니다.

open 용 HP-UX 매뉴얼 페이지는/dev/pts/5를 열면 해당 프로세스가이를 새로운 제어 TTY로 채택해야한다고 제안합니다. 왜 그런 일이 일어나지 않을지, HP-UX 시스템에 액세스하여 실험 할 수 있는지 전혀 알 수 없습니다.

답변

0

답변을 얻기 위해 실제로 HP의 지원을 받아야했던 시스템 사용자이지만 지금 답변을 드리겠습니다. 여기에 게시하겠습니다. 사람은 HPUX termios(7) 페이지에서

: 제어 단자는 포크() 동안 자식 프로세스 상속

(포크 (2) 참조). 프로세스는 setsid() 또는 setpgrp() (setsid (2) 및 setpgrp (2)), 을 사용하여 새 세션을 만들거나 제어 터미널과 관련된 모든 파일 설명자가 닫힌 경우 해당 제어 터미널 을 보류합니다..

(강조가 추가됨).

내가 알 수있는 한 굵게 표시된 부분은 HPUX 특질이며 Posix 또는 다른 Unix 플랫폼의 일부가 아닙니다.

문제는 sshpass가 관련 tty를 열고 파일 설명자가 이미 프로세스의 제어 TTY로 설정되어 있다고 가정하므로 즉시 파일 설명자를 닫는 것입니다.

HPUX의 특이성으로 인해 TTY가 프로세스의 TTY가되고 즉시 닫히면 중지됩니다.