내 말은, core.<pid>
파일 시스템에 보이면 코어 파일 생성이 완료되어 직접 사용할 수 있다는 뜻인가요?
내 질문에 대한 답변이 이루어졌습니다. 하지만 나는 그것을 조금 설명하기로 결정했습니다. 일부 숨겨진 파일에서 처음 생성되고 생성이 완료된 후에만 대상 경로로 이동(이름 변경)된
것 같습니다 . 이 경우 작업은 빠르고 원자적일 수 있습니다.core.<pid>
.code.<pid>~
답변1
나는 특히 바쁜 다중 스레드 시스템에서 또는 덤프 위치가 네트워크 공유에 있는 경우에 내기를 걸지 않을 것입니다(교수가 10Mbit 이더넷 시스템을 통해 NFS를 통해 스풀링해야 하는 8GB 코어 파일을 생성한다는 점은 주목할 가치가 있습니다) ). 파일 시스템 원자성에 rename(1)
는 임시 파일을 잠그거나 쓴 후 다시 쓰는 것과 같은 트릭이 필요한 경우가 많습니다. 일부 연구fs/coredump.c
Linux 4.3.3 커널의 경우 커널이 사용할 파일 이름을 계산하고(링크 해제 경쟁 조건을 사용하여!) 출력 파일을 스풀하기 때문에 그러한 잠금 또는 이름 변경 트릭이 없는 것으로 표시됩니다.
file_start_write(cprm.file);
core_dumped = binfmt->core_dump(&cprm);
file_end_write(cprm.file);
아마도 다른 사용자 영역이 상위에서 비즈니스를 수행하는 동안 실행되는 것을 막는 거대한 커널 잠금이 없기 때문에(이는 대규모 코어 파일 생성 속도를 늦추고 시스템이 어떻게 작동하는지 확인하여 테스트할 수 있음) 이 과정에 문제가 있다고는 생각하지 않습니다. 원자적인 것은 전혀 보이지 않습니다.
답변2
아니요, 다른 파일과 마찬가지로 쓰기가 완료되고 닫힐 때가 아니라 쓰기가 시작될 때 파일 시스템에 나타납니다.