/dev/null로 리디렉션된 실행 중인 프로세스의 표준 출력을 캡처하는 방법

/dev/null로 리디렉션된 실행 중인 프로세스의 표준 출력을 캡처하는 방법

로 리디렉션하는 stdout실행 중인 프로세스를 캡처하고 싶습니다. 시스템 호출을 사용해 보았지만 fd "1"을 닫으면 사용 가능한 가장 낮은 fd 번호이기 때문에 다른 파일에 할당됩니다.stdout/dev/nullfcntl()

주어진 fd를 잠그고 다른 파일에 다시 할당하는 방법에 대한 아이디어가 있습니까?

답변1

proc 파일 시스템을 사용하여 캡처할 수 있다고 생각합니다.

$ cat /proc/<PID>/fd/1

답변2

나는 당신이 gdb이것을 할 수 있다고 믿습니다. 답변 보기이 계산기 문제. 이런 말에서 나올 수도 있을 것 같은데이 블로그 게시물.

답변3

리디렉션을 사용할 수 있습니다(https://github.com/jerome-pouiller/reredirect/).

reredirect -m /dev/null <PID>

나중에 다음 명령을 사용하여 프로세스의 초기 출력을 복원할 수 있습니다.

reredirect -N -O <M> -E <N> <PID>

( 이전에 시작된 리디렉션에 의해 제공됨) <M>.<N>

reredirect는 README다른 명령으로 리디렉션하는 방법도 설명합니다.

관련 정보