stdin
트랩에 재할당이 있는 이유는 무엇입니까 ? 예를 들어,
my_trap() {
lsof -a -p "$BASHPID" -d 0,1,2
}
lsof -a -p "$BASHPID" -d 0,1,2
trap my_trap ERR
echo hi | grep foo
산출
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 63384 Setup 0u CHR 16,2 0t1112831 3717 /dev/ttys002
bash 63384 Setup 1u CHR 16,2 0t1112831 3717 /dev/ttys002
bash 63384 Setup 2u CHR 16,2 0t1112831 3717 /dev/ttys002
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 63384 Setup 0 PIPE 0xde72f1c4316180fd 16384
bash 63384 Setup 1u CHR 16,2 0t1113091 3717 /dev/ttys002
bash 63384 Setup 2u CHR 16,2 0t1113091 3717 /dev/ttys002
stdin
나는 그것이 Pipe 로 재할당된 것을 보았습니다 0xde72f1c4316180fd
. 무슨 일이에요? 그 파이프는 무엇입니까? 원래 파이프라인의 노드 ID가 무엇인지 확인할 수 있나요 stdin
?
stdin
내가 트랩의 sum 파이프에 관심을 갖는 이유는 stdout
트랩 내에서 스택을 덤프할 때 sum 노드 ID도 덤프할 수 있기 때문 stdin
입니다 stdout
. 이렇게 하면 실패한 파이프라인이 있고 각 단계에서 트랩을 실행하고 스택을 덤프하는 경우, stdin
이를 추적하고 연결하여 해당 파이프라인이 소비하는 다른 스택과 다른 스택을 생성하는 스택을 추적하여 알아낼 수 있습니다 stdout
. stdin
파이프가 재할당 되면 이 체인을 구축할 수 없습니다.