gssproxy
특히 Arch Linux에서 사용하고 있습니다 .
Name : gssproxy
Version : 0.8.0-1
/usr/bin/gssproxy
다음과 같은 동작이 발생했습니다. 이와 같이 출력을 파이프하려고 할 때
/usr/bin/gssproxy | cat
차단됩니다. 그러나 이 명령을 실행하면
/usr/bin/gssproxy
차단되지 않고 백그라운드에서 다른 프로세스가 생성됩니다.
root 13720 0.0 0.0 59732 584 ? Ssl 11:44 0:00 /usr/bin/gssproxy
그리고 존재합니다.
파이프되는 출력이 의미가 없을 수도 있다는 데 동의 gssproxy
하지만, 이 동작이 발생하는 이유를 알고 싶습니다. 특히 cat
막힘의 원인은 무엇입니까?
편집하다:
차단이란 다음 명령을 의미합니다.
timeout -k 1 1 /usr/bin/gssproxy | cat
,
종료하지 않고 동시에
timeout -k 1 1 /usr/bin/gssproxy
즉시 종료하십시오. 두 명령 모두 gssproxy
백그라운드에서 프로세스를 생성합니다. 왜 첫 번째 명령이 예상한 대로 1초 후에 종료되지 않는지 궁금합니다.
답변1
@Kusalananda가 언급했듯이 gssproxy
데몬 프로세스로 실행되면 상위 프로세스는 하위 프로세스가 종료될 때까지 기다릴 수 있습니다.
다음은 동일한 상황을 시뮬레이션하는 짧은 쉘 스크립트입니다.
$ cat t1
#!/bin/bash
sleep 10 &
$ date; ./t1 | cat ; date
Sun Apr 7 10:59:02 BST 2019
Sun Apr 7 10:59:12 BST 2019
date 명령은 순전히 cat이 종료된 후(10초) 하위 프로세스가 존재함을 표시하기 위한 것입니다.