struct stat 구조체의 역할.
재넘이
일단 그 구조체 포인터 선언후 stat()이라는 함수로 stat()에 첫번째 파라미터값으로
들어가는 파일을 조사해서 그 조사값을 구조체에 리턴해주는거라고 알고는 있는데
이게 대체 무슨짓을 하길래 그냥 구조체만 선언하는것 만으로 파일을 바보로 만들죠;?
stat()함수에 넣어서 그냥 리턴만 받기만해도 코어덤프가 일어납니다 -_-;;;
(세그먼트 폴트가 나요 ㅠㅠ)
논리적으로 만들어놓은 stat()함수 내부를 봤는데 별짓은 안하던데요.. 이거 참;
(아 리눅스 상에서의 문제입니다.)
-
싴흐한세여니 2025-04-08
아 문제 해결했습니다. 수다님 말씀대로 메모리할당 문제였었지요 ^^;;
-
원술 2025-04-08
유닉스는 메모리 할당안한상태에서 임의주소(쓰레기값주소)에다가 무엇인가 쓰려고하면
무조건 오류를 일으킵니다... 윈도우는 다르지만요 -
과꽃 2025-04-08
stat 변수를 포인터로 선언하셨다고 했는데 해당구조체 stat의 size인 88의 넓이만큼
malloc을 사용해서 메모리 할당을 하셔야 할꺼같네요..
오래지나서 보실지는 모르겠지만 -
떠나간그녀 2025-04-08
sizeof 로 보니까 88 나오네요.
코드는 간단합니다. open을 해서 for문을 돌면서 read(handler,buffer,1byte) 가 true인동안 %c를 해서 찍는 것입니다. permission을 조정해서 0600인 파일을 effective user ID가 읽을 수 있도록 하기 위해서 struct stat을 썼는데 이거 원 -_ㅜ 안되네요. 휴..; -
얀별 2025-04-08
코드를 보고, 디버깅도 해봐야 알겠는걸요. ㅇㅅㅇ;; 도움 드릴 수 없어 ㅈㅅ;; 참, 구조체가 엄청 큰가봐요?
-
ComeOn 2025-04-08
정확히 말하면 open() 해서 read()를 하면 제대로 못읽고 무한루프를 돕니다. -_-;; 대체 뭐가 문젠지 모르겠네요. struct stat blah; 문장을 지우기만 하면 괜찮구요. 안하면 문제네요. -_-;;
-
모든 2025-04-08
stat() 함수로 리턴 받지 않으면 open시에 무한루프를 돌고 (선언부에 선언만 해두면)
리턴받으면 실행은 되지만 세그먼트 폴트가 납니다. 코어덤프 되서 gdb로 봐도 뭐가 뭔지 모르겠구요 --; -
Judicious 2025-04-08
바보를 만드는게 뭐죠;; 좀 요목조목하게 말씀 좀 해주세요;