open함수로 mode 변경 질문입니다
open함수를 사용해서 이미 존재하는 파일의 권한을 변경해주는 방법은 없을까요?
새로운 파일의 생성 시에 권한을 줄 수 있다면 기존 파일의 권한도 수정해 줄 수 있을 것 같아서 시도해봤는데 안됬습니다.
제가 못한건지 open 함수로 기존 파일의 권한의 수정이 불가능한건지 궁금해서 질문드립니다.
답변 1
1
안녕하세요. 이준호님
답변드립니다.
open()를 사용해 파일을 생성할 때 파일의 권한을 지정할 수 있습니다. 그 후 open() 되어 있는 상태로 파일 권한을 변경하려면 fchmod()를 사용하시면 됩니다. 이미 존재하는 파일에 대해서는 chmod()를 이용해 파일의 권한을 변경할 수 있습니다.
"man 2 chmod"로 manpage를 참고해보세요. 쉽게 사용하실 수 있습니다.
더 궁금한 내용 있으시면 추가 질문 남겨주세요~! :D
0
이 강좌는 C언어를 배우기 위한 강좌가 아닙니다. C언어 강좌라면 변수, 조건문, 구조체 뭐 이런 것들을 배워야 하겠죠 :) open() 함수의 사용법에 대해 배우는 것은 C언어를 배우는 것이 아니라 C언어를 이용해 파일을 여는 방법을 배우는 것이라고 할 수 있습니다. 이 부분에서 좀 헤깔리신 것이 아닌가 싶네요.
제 강좌에서는 리눅스 시스템 프로그래밍을 위해 C언어를 사용하지만, 제 강좌의 본질은 리눅스 시스템 프로그래밍입니다. C언어를 이용해 어떻게 리눅스 시스템 리소스를 제어할 수 있는지를 배우게 됩니다. 그럼으로써 리눅스 시스템을 좀 더 깊게 이해할 수 있게 됩니다.
그러면 왜 C언어로 리눅스 시스템 프로그래밍을 해야하나? 라는 질문을 하실 수 있겠네요. C++이나 python과 같은 언어로도 리눅스 시스템 프로그래밍을 할 수는 있습니다. 하지만 리눅스 시스템 프로그래밍의 기본이 C언어이고, 많은 회사들에서 C언어를 이용해 리눅스 시스템을 제어하는 소프트웨어를 작성하기 때문에 강좌도 C언어로 진행하게 된 것입니다.
그리고, 우리가 호출하는 open()과 같은 함수는 glibc라는 라이브러리에 구현되어 있습니다. 실제로 이 open() 함수가 어떻게 구현되어 있는지 보고 싶으시면 glibc 소스 코드를 받아서 풀어보시면 되겠습니다. 하지만 사람이 알아볼 수 있는 수준이 아니기 때문에^^; 굳이 그러시지 않으셔도 될 것 같습니다 ;)
더 궁금한 내용 있으시면 추가 질문 남겨주세요~
inotify 객체에 등록된 watch descriptor 해제 관련 질문
0
56
2
select API 실습 코드 질문
0
59
2
wsl에서 fcntl사용
0
84
2
inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...
0
195
2
./stat 파일이름
0
283
2
fopen r, r+모드 차이
0
468
2
강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?
0
332
1
pthread 질문
0
426
2
I/O Multiplexing(select) 질문
0
328
1
inotify.c. ret 질문
0
310
1
inotify.c 질의합니다.
1
321
1
child process
0
726
1
read/blocking
0
576
1
flock
0
570
1
system call
0
608
1
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
0
494
1
fork() 함수 사용시 결과 관련 질문
0
389
1
exec 관련 궁금한 사항
0
464
2
파일 디스크립터와 FILE 구조체에 대한 질문
0
563
1
buf 선언에 따른 read() fail 문제
0
258
2
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
0
262
1
2번 multi thread 방법 질문
0
250
1
segmentation fault 발생 관련 문의
1
852
1
라이브 코딩 실습 코드
0
241
1





