트랩에서 "stdin"이 재할당되는 이유는 무엇입니까?

트랩에서 "stdin"이 재할당되는 이유는 무엇입니까?

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파이프가 재할당 되면 이 체인을 구축할 수 없습니다.

관련 정보