유닉스

유닉스

시스템 정보

운영체제에 대한 기본 정보 검색 uname -a SunOS hanbit 5.10 Generic_118855-33 i86pc i386 i86pc 운영체제명, 호스트명, 릴리즈 레벨, 버전 번호, 하드웨어 형식명, CPU명, 플랫폼명 #include int uname(struct utsname *name); main() { struct utsname system_info; uname(&system_info); printf("OS name : %s\n",system_info.sysname); printf("Node name : %s\n",system_info.nodename); printf("Release : %s\n", system_info.release); printf("Version : %s\n", sy..

유닉스

디렉토리 관련 함수

., ..은 모든 디렉토리에 항상 존재하고 디렉토리 생성 시 자동 포함됨 mkdir - 디렉토리 생성 mkdir("han", mode) rmdir - 디렉토리 삭제 rmdir("han") rename - 디렉토리명 변경 rename("old", "newName") getcwd - 현재 작업 디렉토리 위치 getcwd(char *buf, size_t size); cwd = getswd(NULL, BUFSIZ); 또는 getswd(wd, BUFSIZ) 로 사용 가능 전자는 cwd에 경로 저장, 후자는 wd에 경로 저장됨 명령은 pwd chdir - 디렉토리 이동 chdir("path") opendir - 디렉토리 열기 close dir - 디렉토리 닫기 readdir - 디렉토리 정보 읽기 struct di..

유닉스

링크 파일 생성

링크 보고 싶을 때 -i 붙이기 ls -ali unix* 하드 링크 파일에 접근할 수 있는 파일명 새로 생성함 기존 파일과 동일한 inode 사용 (inode 공유) 생성하면 inode에 저장된 링크 개수가 증가함 삭제 시 링크 개수만 줄어듬 #include int link(const char *existion, const char *new); int main(){ struct stat buf; stat("filename",&buf); link("filename", "filename2"); //filename의 하드링크 filename2 생성 stat("filename",&buf); printf("link count = %d",(int)buf.st_nlink); } 심볼릭 링크 기존 파일에 접근 가능한 ..

유닉스

파일 접근 권한 제어

st_mode 구조 _rwer__r__ 파일 종류 1비트, (특수 접근 권한 3비트,) user 권한 3비트, group 권한 3비트, other 권한 3비트 111100100 2진수로 표현, 각 3자리를 10진수로 변환해서 744로 표현 가능함 r: read, w: write, e: execute 권한 바꾸고 싶을 때 chmod u-x, g+w, o+w testdata -> user에서 실행 권한 빼고 group, other에 write 권한 주기 chmod 600 testdata -> testdata의 권한을 600(110000000) 으로 바꾸기 파일 소유자 : 사용자 식별번호로 구별 uid, gid, /etc/password 유효 사용자 식별번호 euid set user-id(04000) : 일시..

유닉스

파일 정보 검색

stat 파일명으로 파일 정보 검색 #include #include #include int stat(const char *restrict path, struct stat *buf); int main(){ struct stat buf; stat("파일명", &buf); printf("Inode = %d\n",(int)buf.st_mode); } st_dev : inode가 저장되어 있는 장치의 장치 번호 st_ino : inode 번호 %d st_mode : 파일 형식, 접근 권한 %o st_nlink : 하드 링크 개수 %d st_uid : 파일 소유자의 UID %d st_gid : 파일 소유 그룹의 GID %d st_rdev : 장치 파일일 경우 주 장치 번호, 부 장치 번호 %d st_atime : ..

유닉스

고수준 파일 오프셋

fseek #include int fseek(FILE *stream, long offset, int whence); int main(){ fseek(fp, 1, SEEK_CUR); } lseek와 유사하게 동작함 성공시 0, 실패시 EOF 리턴함 현재 오프셋 구할 때는 lseek처럼 하면 안됨 ftell, rewind #include long ftell(FILE *stream); void rewind(FILE *stream); ftell : 현재 오프셋 리턴 rewind : 처음 위치로 오프셋 즉시 이동

유닉스

고수준 파일 입출력

fopen, fclose #inlcude FILE *fopen(const char *filename, const char *mode); int fclose(FILE *stream); int main(){ FILE *fp; fp = fopen("unix.txt","r"); fclose(fp); } fopen : filename으로 지정한 파일을 mode에 따라서 열고 파일 포인터 리턴 mode 값 : r, w, a, rb, wb, ab, r+, w+, a+ , rb+, wb+, ab+ + 붙으면 2개 (읽기 쓰기 / 추가 읽기 ..) mode 값 넣을 때 따옴표 잊지 않기! fread #include size_t fread(void *ptr, size_t size, size_t nitems, FILE *s..

유닉스

lseek, dup, fcntl

lseek 파일의 오프셋 지정하는 함수 #include #include off_t lseek(int fildes, off_t offset, int whence); int main(){ lseek(fd, 5, SEEK_SET); //파일의 처음부터 5번째 위치로 이동 } fildes : 파일 기술자 offset : 이동할 오프셋 위치 whence : 오프셋 기준 위치 (SEEK_SET, SEEK_CUR, SEEK_END) off_t는 long으로 정의되어 있음 파일을 읽/쓰고 싶은 위치로 옮길 때 사용하면 된다. dup, dup2 파일 기술자 복사(또는 지정)하는 함수 #include int dup(int fildes); int dup2(int fildes, int fildes2); int main(){ ..

hahihi
'유닉스' 카테고리의 글 목록 (3 Page)