내가 (본과 같은 껍질에서) 할 경우 :
exec 3> file 4>&3 5> file 6>> file
파일 설명자 3과 4는 4가 dup()3에서 시작되었으므로 동일한 열린 파일 설명 (동일한 속성, 파일 내에서 동일한 오프셋 ...)을 공유합니다. 해당 프로세스의 파일 디스크립터 5와 6은 다른 열린 파일 설명 에 있지만 (예를 들어 파일에 고유 한 포인터가 있습니다).
이제 lsof출력 결과는 다음과 같습니다.
zsh 21519 stephane 3w REG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 4w REG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 5w REG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 6w REG 254,2 0 10505865 /home/stephane/file
다음과 lsof +fg같이 조금 나아졌습니다 .
zsh 21519 stephane 3w REG W,LG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 4w REG W,LG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 5w REG W,LG 254,2 0 10505865 /home/stephane/file
zsh 21519 stephane 6w REG W,AP,LG 254,2 0 10505865 /home/stephane/file
(여기서는 Linux 3.16에서) fd 6에는 다른 플래그가 있으므로 fd 3, 4 또는 5의 파일 과 다른 열린 파일 설명 이어야 하지만 fd 5가 다른 열린 파일 설명 . 를 사용하면 -o오프셋도 볼 수 있지만 동일한 오프셋이 동일한 열린 파일 설명을 보장하지는 않습니다 .
방해하지 않는 1 가지 방법이 있습니까? 외부 또는 프로세스 자체 파일 설명자?
1 . 휴리스틱 접근법 중 하나는 fd의 플래그를 변경하고 fcntl()다른 파일 디스크립터가 플래그를 업데이트 한 결과를 보는 것이 될 수 있지만, 이상적이지 않고 어리석은 증거는 아닙니다.