리눅스 커널 PATH_MAX
은 NAME_MAX
.limits.conf
이 상수를 늘리고 커널을 다시 컴파일하면 어떻게 됩니까?
/usr/include/linux/limits.h
또한 이를 변경 하고 libc(및 헤더가 포함된 모든 프로그램)를 다시 컴파일해야 한다고 생각합니다 .
- 더 긴 경로/이름으로 파일을 만들 수 있나요?
- 이렇게 긴 파일 이름을 가진 파일 시스템을 다른 시스템에 마운트하면 어떻게 됩니까?
질문 2: 커널이 .보다 큰 경로를 생성하는 것을 방지한다는 것을 알고 있습니다 . 그러나 파일 시스템 자체가 그보다 긴 경로(예: after ) PATH_MAX
를 제공하는 경우 이를 어떻게 처리하는지 알고 싶습니다 .ls
답변1
더 긴 경로를 가진 파일을 만드는 것이 이미 가능합니다. 상대 경로를 사용하고 마운트 지점을 변경하는 등의 방법으로 .보다 긴 절대 경로를 가진 파일을 생성할 수
PATH_MAX
있으며 커널은 이를 처리하는 방법을 이미 알고 있습니다. 증가PATH_MAX
하는include/uapi/linux/limits.h
, 아니요limits.conf
) 한 번에 처리할 수 있는 최대 경로 길이가 늘어납니다. 허드정의되지도 않았어PATH_MAX
.NAME_MAX
Linux에서 사용되는 대부분의 파일 시스템이 제한되기 때문에 늘리는 것이 반드시 큰 도움이 되는 것은 아닙니다.255바이트 구성 요소 이름만 지원합니다..위에서 언급했듯이 더 긴 경로는 이미 현실이며 Unix 스타일 시스템은 이를 처리할 수 있습니다(상대 경로, 심볼릭 링크 등을 사용하여). 더 길게이름등이 발생할 수도 있습니다.
readdir
예상 최대값보다 긴 이름을 반환할 수 있도록 문서화되었습니다.
당신은 또한 볼 수 있습니다Linux는 255바이트보다 긴 파일 이름을 어느 정도까지 지원합니까?
또한 프로그램은 빌드 타임 상수를 사용해서는 안 limits.h
됩니다 .pathconf
. 불행하게도 항상 그런 것은 아니며 지정된 길이가 없는 사용자 공간 프로그램에서 제공하는 버퍼에 쓸 때 커널이 더 큰 합계를 가정하는 문제에 직면할 가능성이 높습니다 PATH_MAX
.NAME_MAX