-2
ANSI C cgi-bin 서버 프로그램을 작성하고 있습니다. 프로그램의 각 인스턴스는 동일한 파일에 동시에 액세스 할 수 있습니다. 다음과 같이 내가 할 :ANSI C에서 파일을 올바르게 잠그는 방법
handle = fopen(name,type);
fd = fileno(handle);
MyLockFile(fd) //I use fcntl
.....
문제는 내가하지 "열기"와 "fopen을"로 파일을 열 것입니다. "잠금"같은 방식으로 작동합니까? "fd"를 잠글 수 있으며 "처리"할 수 없습니다.
이유는 "실행할 수있는"fd = open ... "코드를 쓸 수 없다는 것입니다. 아래 코드는 실행 파일을 만들고 쓰기 권한은 설정하지 않았습니다. 내가 쓸도이 파일에 추가 할 수 있습니다 둘 이유
fd = open(name,O_CREAT|O_WRONLY|S_IREAD|S_IWRITE|S_IRGRP|
S_IWGRP|S_IROTH|S_IWOTH);
write(fd,data,strlen(data));
close(fd);
모르겠어요.
오 예 !!!! 감사! 하지만 "fopen"으로 연 다음 "fd = fileno (handle)"로 열고 fd를 잠글 수 있습니까? – nms
@nms 글쎄, fcntl 워드 프로세서는 "stdio (3) 라이브러리에 의해 수행되는 버퍼링 때문에 해당 패키지의 루틴으로 레코드 잠금을 사용하지 말고 대신 read (2)와 write (2)를 사용하십시오. " – nos
"fopen "은 낮은 레벨의"open "루틴이고"open ","write ","fwrite "대신"read "를 사용해야합니다. 알았습니다. 당신은 !!! – nms