목록유닉스(Unix)/시스템 프로그래밍 (33)
K 개발자
프로세스 실행 시간의 구성 프로세스 실행 시간 = 시스템 실행 시간 + 사용자 실행 시간 시스템 실행 시간은 프로세스에서 커널의 코드를 수행한 시간으로, 시스템 호출로 소비한 시간을 의미한다. 사용자 실행 시간은 사용자 모드에서 프로세스를 실행한 시간으로, 프로그램 내부의 함수나 반복문처럼 사용자가 작성한 코드를 실행하는 데 걸린 시간이다. 프로세스 실행 시간 측정 프로세스의 실행 시간을 측정하는 데는 times 함수를 사용한다. times 함수를 사용하면 프로세스의 실행에 소요된 사용자 실행 시간과 시스템 실행 시간을 알 수 있다. 특히 모든 자식 프로세스의 실행 시간을 함께 알 수 있다. tms 구조체 tms 구조체는 파일에 다음과 같이 정의되어 있다. struct tms { clock_t tms_u..
PID 검색 PID 검색 : getpid(2) #include pid_t getpid(void); PPID 검색 : getppid(2) #include pid_t getppid(void); 프로세스 그룹 PGID 검색 : getpgrp(2), getpgid(2) #include pid_t getpgrp(void); pid_t getpgid(pid_t pid); // pid : PGID를 구하려는 프로세스의 ID PGID 변경 : setpgid(2) #include #include int setpgid(pid_t pid, pid_t pgid); // pid : 프로세스 그룹에 속한 프로세스의 ID, pgid : 새로 지정할 PGID 세션 세션 검색 : getsid(2) #include pid_t getsi..
프로세스의 정의 프로세스process는 실행 중인 프로그램을 의미한다. 컴파일 방식으로 생성된 실행 파일이든, 인터프리트 방식으로 동작하는 스크립트 파일이든 상관없이 이들을 실행하면 프로세스가 된다. 즉, 프로세스는 프로세서가 처리 중인 프로그램을 의미한다. 프로세스의 구조 프로그램을 실행하면 프로세스가 생성되는데, 메모리에 적재된 프로세스는 기본적으로 메모리가 할당된다. 프로세스 상태 변화 프로세스의 상태는 규칙에 따라 여러 상태로 변한다. 프로세스는 먼저 사용자 모드에서 실행한다. 사용자 모드에서 시스템 호출을 하면 커널 모드로 전환되어 실행된다. 수면 중이던 프로세스가 깨어나 실행 대기 상태로 전환되면 바로 실행할 수 있도록 준비한다. 커널 모드에서 실행 중 입출력 완료를 기다릴 때와 같이 더 이상..
시간 관리 함수 유닉스 시스템은 1970년 1월 1일 0시 0분 0초(그리니치 표준시, UTC 시간대)부터 현재까지 경과한 시간을 초 단위로 저장하고, 이를 기준으로 시간 정보를 관리한다. 기본 시간 정보 확인 초 단위로 현재 시간 정보 얻기 : time(2) #include #include time_t time(time_t *tloc); // tloc : 검색한 시간 정보를 저장할 주소 마이크로 초 단위로 시간 정보 얻기 : gettimeofday(3) #include int gettimeofday(struct timeval *tp, void *tzp); int settimeofday(struct timeval *tp, void *tzp); // tp : 시간 정보 구조체 주소, tzp : 시간대 시간..
로그인명과 UID 검색 로그인명 검색 : getlogin(3) #include char *getlogin(void); 로그인명 검색 : cuserid(3) #include char *cuserid(char *s); // s : 검색한 로그인명을 저장할 주소 uid 검색 : getuid(2), geteuid(2) #include #include uid_t getuid(void); uid_t geteuid(void); 패스워드 파일 검색 /etc/passwd 파일에는 로그인명, UID, GID, 사용자의 홈 디렉토리, 로그인 쉘 등 사용자에 관한 기본적인 정보가 들어 있다. passwd 구조체 /etc/passwd 파일의 정보를 읽어오려면 passwd 구조체를 사용해야 한다. passwd 구조체는 파일에 정..
운영체제 기본 정보 검색 운영체제 정보 검색 : uname(2) #include int uname(struct utsname *name); // name : utsname 구조체 주소 시스템 정보의 검색과 설정 시스템 정보 검색과 설정 : sysinfo(2) #include long sysinfo(int command, char *buf, long count); // command : 검색 또는 설정할 명령, buf : 버퍼 주소, count : 버퍼 길이 시스템 자원 정보 검색 시스템 자원 정보 검색 : sysconf(3) #include long sysconf(int name); // name : 검색할 정보를 나타내는 함수 파일과 디렉토리 관련 자원 검색 : fpathconf(3), pathconf..
디렉토리 생성과 삭제 디렉토리 생성 : mkdir(2) #include #include int mkdir(const char *path, mode_t mode); // path : 디렉토리가 포함된 경로, mode : 접근 권한 디렉토리 삭제 : rmdir(2) #include int rmdir(const char *path); // path : 삭제할 경로 디렉토리 관리 디렉토리명 변경 : rename(2) #include int rename(const char *old, const char *new); // old : 변경할 파일/디렉토리명, new : 새 파일/디렉토리명 현재 작업 디렉토리 위치 : getcwd(3) #include char *getcwd(char *buf, size_t size);..
하드 링크 하드 링크hard link는 파일에 접근할 수 있는 파일명을 새로 생성하는 것이다. 하드 링크는 기존 파일과 동일한 inode를 사용한다. 하드 링크를 생성하면 inode에 저장된 링크 개수link count가 증가한다. 하드 링크 생성 : link(2) #include int link(const char *existing, const char *new); // existing : 기존 파일의 경로, new : 새로 생성할 링크의 경로 심볼릭 링크 심볼릭 링크symbolic link는 기존 파일에 접근할 수 있는 다른 파일을 만든다. 기존 파일과 다른 inode를 사용하며, 기존 파일의 경로를 저장한다. 심볼릭 링크 생성 : symlink(2) #include int symlink(const ..