FreeBSD에서만 daemon(3)이 SIGHUP을 무시하는 이유는 무엇입니까?

FreeBSD에서만 daemon(3)이 SIGHUP을 무시하는 이유는 무엇입니까?

~처럼systemd tmux daemon()Reddit에 대한 토론, 나는 이것이 단지FreeBSD 버전 daemon() libc라이브러리 호출무시됨SIGHUP sigaction(2), 하지만오픈BSD아니면 glibc/misc/daemon.c. 왜?

답변1

나는 추적했다https://svnweb.freebsd.org/base?view=revision&revision=122442그리고https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=25462.

극단적인 경우도 있는 것 같더라구요SIGHUP signal배송시daemon()도서관에서 전화가 왔습니다.fork(2)그 다음에_exit(2)부모님의hup배달 (에 따라_exit(2)) 그리고 하위 프로세스를 실행하는 상위 프로세스가 이미 세션 리더인 경우 하위 프로세스는 다음에 설명된 대로 종료됩니다.setsid(2).

호출자가 세션 리더인 경우 이러한 제한된 경우에 하위 프로세스가 예기치 않게 종료되는 것을 방지하기 위해(이러한 경우의 전체 목록은 위의 Bugzilla에 있음) SIGHUP일시적으로 무시됩니다.

관련 정보