#include <fstab.h>
struct fstab *getfsent(void);
http://man7.org/linux/man-pages/man3/getfsent.3.html
getfsent
파일에서 한 줄을 읽고 /etc/fstab
유형의 변수를 반환합니다 struct fstab*
. 꼭 풀어야 하나요? 아니면 다른 사람이 관리하는 건가요? 다른 사람이 관리하는 경우 반환 유형이 아닌 이유는 무엇입니까 const struct fstab*
? 위의 참조를 확인했지만 유용한 내용을 찾을 수 없습니다.
답변1
적어도 glibc에서는 이렇게 해서는 안 됩니다. 이것원천이 포인터가 내부 상태 구조의 멤버를 가리키므로 직접 해제할 수 없음을 나타냅니다.
이것문서이는 다음에서도 암시됩니다.
파일의 전체 내용을 읽기 위해
fstab
GNU C 라이브러리에는 일반적인 방식으로 설계된 세 가지 함수 세트가 포함되어 있습니다.
여기서 "일반적인" 방법은 다음과 같습니다.getpwent
:
반환 값은 정적 영역을 가리킬 수 있으며 후속 호출에서 호출되거나
getpwent()
덮어getpwnam(3)
쓸 수 있습니다getpwuid(3)
. (반환된 포인터를 에 전달하지 마십시오free(3)
.)
또한 glibc 문서에서는 다음 사항을 구체적으로 다룹니다 getfsent
.
이 함수는 유형 변수에 대한 포인터를 반환합니다
struct fstab
. 이 변수는 모든 스레드에서 공유되므로 함수는 스레드로부터 안전하지 않습니다. 오류가 발생하면 getfsent는NULL
포인터를 반환합니다.
변수는 공유됩니다. 이는 메모리 관리를 망쳐서는 안 된다는 강력한 표시입니다.
리소스를 해제하려면 을 사용하세요 endfsent()
. 이렇게 하면 내부 상태가 지워집니다.