의문) fd를 fdopen을 통해 fp로 바꾼 후 fclose로 닫으면 close로 fd를 또 닫을 필요가 있을 까 없을 까?
$ cat ./test.cpp
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd;
FILE* fp;
fd = open("hello.txt", O_CREAT|O_TRUNC);
printf("fd1 : %d\n", fd);
fp = fdopen(fd, "r");
fclose(fp);
fd = open("hello2.txt", O_CREAT|O_TRUNC);
printf("fd2 : %d\n", fd);
return 0;
}
$ ./a.out
fd1 : 3
fd2 : 3
관찰 : open를 두 번째로 call했을 때 빈 fd 중 가장 작은 것을 주는 데, 3번이 닫혔으므로 3번을 주는 것이 분명하다.
결론 : fdopen으로 fd를 fp로 바꾼후 fclose로 닫으면 fd가 닫히기 때문에
close()를 또 호출할 필요가 없다.
댓글 없음:
댓글 쓰기