내가 (본과 같은 껍질에서) 할 경우 :
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()
다른 파일 디스크립터가 플래그를 업데이트 한 결과를 보는 것이 될 수 있지만, 이상적이지 않고 어리석은 증거는 아닙니다.