#include <sys/utsname.h>
int uname(struct utsname *buf);
운영체제 정보를 검색해 utsname 구조체에 저장
각 항목은 문자형 배열이며, 각 값은 널 종료 문자열로 저장
int gethostname(char *name, size_t len);
int sethostname(const char *name, size_t len);
Gethostname() 함수: 현재 시스템에 설정된 호스트 이름을 검색하여 name에 저장
Sethostname() 함수: 새로 설정할 호스트 이름을 name에 지정
len: name의 길이
long sysinfo(int command, char *buf, long count);
name
: 검색할 정보를 나타내는 상수 long fpathconf(int fd, int name)
long pathconf(const char *path, int name)
fd
: 파일 기술자path
: 파일이나 디렉터리 경로name
: 검색할 정보를 지정하는 상수 uid_t getuid(void)
uid_t geteuid(void)
실제 사용자 ID(RUID) : 로그인할 때 사용한 로그인명에 대응하는 UID로, 프로그램을 실행하는 사용자
유효 사용자 ID(EUID) : 프로세스에 대한 접근 권한을 부여할 때 사용,처음 로그인할 때는 실제 사용자 ID와 유효 사용자 ID가 같지만, setuid가 설정된 프로그램을 실행하거나 다른 사용자 ID로 변경할 경우 유효 사용자 ID는 달라짐
pw_name : 로그인명을 저장
pw_passwd : 암호를 저장, 요즘은 거의 대부분의 리눅스 시스템이 암호를 별도의 파일에 저장하므로 의미 없는 항목
pw_uid : UID를 저장
pw_gid : 기본 그룹 ID를 저장
pw_gecos : 사용자 실명이나 기타 정보를 저장
pw_dir : 홈 디렉터리를 저장
pw_shell : 로그인 셸을 저장
gid_t getgid(void)
gid_t getegid(void)
int ftw(const char path, int(func)(), int depth)
int func(const char name, const struct stat sptr, int type)
FTW_F : 객체가 하나의 파일임
FTW_D : 객체가 하나의 디렉토리임
FTW_DNR : 객체가 읽을 수 없는 하나의 디렉토리임
FTW_SL : 객체가 하나의 심볼형 링크임
FTW_NS : 객체가 심볼형 링크가 아니며, 따라서 stat 루틴이 성공적으로 수행될 수 없는 객체임
프로세스: 현재 실행 중인 프로그램을 의미
리눅스 시스템에서는 동시에 여러 프로세스가 실행
프로세스가 계속 실행 상태에 있는 것은 아니며, 실행, 수면, 실행 대기 등 규칙에 따라 여러 상태로 변함
현재 리눅스 시스템에서 실행 중인 프로세스를 확인하려면 ps, top 명령을 사용
시스템에서 프로세스를 식별하는 데는 프로세스 ID(PID)를 사용하고, 관련 프로세스들이 모여 프로세스 그룹을 구성
POSIX 표준에서 제안한 개념으로, 사용자가 로그인해서 작업하는 터미널 단위로 프로세스 그룹을 묶은 것
시스템 실행 시간: 프로세스에서 커널의 코드를 수행한 시간
사용자 실행 시간: 사용자 모드에서 프로세스를 실행한 시간
프로세스 실행 시간을 측정하려면 times( ) 함수를 사용
텍스트 영역 : 실행 코드를 저장, 텍스트 영역은 프로세스 실행 중에 크기가 변하지 않는 고정 영역에 속함
데이터 영역 : 프로그램에서 정의한 전역 변수를 저장
전역 변수는 프로그램을 작성할 때 크기가 고정되므로 고정 영역에 할당
힙 영역 : 프로그램 실행 중에 동적으로 메모리를 요청하는 경우에 할당되는 영역
빈 영역→할당→할당 해제처럼 상태가 변하는 가변 영역
스택 영역 : 프로그램에서 정의한 지역 변수를 저장하는 메모리 영역으로, 지역 변수를 정의 한 부분에서 할당해 사용
빈 공간 : 스택이나 힙과 같이 가변적인 메모리 할당을 위해 유지하고 있는 빈 메모리 영역
프로세스에 할당된 빈 메모리 영역이 모두 소진되면 메모리 부족으로 프로그램 실행이 중단될 수도 있음
실행 중인 프로세스의 목록을 보려면 ps 명령을 사용
아무 옵션 없이 ps 명령을 사용하면 현재 터미널에서 실행한 프로세스만 출력
시스템에서 동작하고 있는 전체 프로세스를 보려면 -ef 옵션을 지정
내 것만 보기 ps -ef | grep s19011449
현재 실행 중인 프로세스를 주기적으로 확인해 출력
top 명령으로 확인할 수 있는 정보 중에서 메모리와 스왑 등에 관한 정보를 직접 검색하려면 sysinfo( ) 함수를 사용
PID는 0번부터 시작
0번 프로세스: 스케줄러로, 프로세스에 CPU 시간을 할당하는 역할 수행, 커널의 일부분이므로 별도의 실행 파일은 없음
1번 프로세스: init로 프로세스가 새로 생성될 때마다 기존 PID와 중복되지 않은 번호가 할당
현재 프로세스의 PID를 검색하려면 getpid() 함수를 사용
부모 프로세스: 0번 프로세스를 제외한 모든 프로세스에는 자신을 생성한 프로세스
PPID: 부모 프로세스의 PID
부모 프로세스의 PID를 검색하려면 getppid() 함수를 사용
시스템 실행 시간: 프로세스에서 커널의 코드를 수행한 시간으로, 시스템 호출로 소비한 시간을 의미
사용자 실행 시간: 사용자 모드에서 프로세스를 실행한 시간으로, 프로그램 내부의 함수나 반복문처럼 사용자가 작성한 코드를 실행하는 데 걸린 시간
clock_t times(struct tms *buf);
buf : 실행 시간을 저장할 tms 구조체의 주소