본문 바로가기

개발/리눅스 시스템 프로그래밍

좀비 프로세스 방지 출처 : 아주대학교 시스템 소프트웨어 보안 강의자료 /* * 공부한거 정리하는거라 틀린게 있을 수도 있어요... * 내용에 틀린게 있으면 알려주세요!! */ 유닉스의 모든 프로세스는 종료 시에 종료 상태를 부모 프로세스에 보낸다. 부모 프로세스는 해당 프로세스를 실행한 프로세스인데, wait함수 또는 waitpid함수를 사용해 자식 프로세스의 종료 상태를 받을 수 있다. 하지만 부모 프로세스가 자식 프로세스를 받아주지 않을 경우, 자식 프로세스는 아무 작업도 하지 않지만 종료되지는 못한 채 남아있게 된다. 이를 좀비 프로세스라고 부른다. wait함수와 waitpid함수의 자세한 설명은 다음과 같다. wait : 자식 프로세스가 종료 상태를 보낼 때까지 대기. 부모 프로세스는 block 함수 원형 pid_..
유닉스 파일 함수 정리 출처 : 아주대학교 시스템 소프트웨어 보안 강의자료 /* * 공부한거 정리하는거라 틀린게 있을 수도 있어요... * 내용에 틀린게 있으면 알려주세요!! */ 파일 핸들링에 자주 사용하는 함수들을 정리해봤습니다. 1. open : 프로세스에서 파일을 사용할 수 있도록 파일을 불러오는 함수 파일 원형 int open(const char *pathname, int flag, /* mode_t mode */ ) 헤더 fcntl.h 반환 파일 디스크립터 값을 반환 실패시 -1을 반환 인수 설명 const char *pathname : 파일의 경로 및 이름 int flag : 파일 열기 옵션. 아래 옵션들 모두 fcntl.h에서 사용 가능 - O_RDONLY : 읽기 전용 - O_WRONLY : 쓰기 전용 - O_..
유닉스 파일 시스템2 출처 : 아주대학교 시스템 소프트웨어 보안 강의자료 /* * 공부한거 정리하는거라 틀린게 있을 수도 있어요... * 내용에 틀린게 있으면 알려주세요!! */ 이전 포스팅에서 시스템 파일 테이블에는 file sharing이 가능하다고 언급했다. 2개의 프로세스에서 같은 파일을 열면 파일 테이블에는 2개의 엔트리가 생성되고 이 두 엔트리는 하나의 아이노드를 참조한다는 내용이다. 하지만 이 구조가 달라지는 경우가 있는데 fork()와 dup()를 사용한 경우이다. fork() 함수는 프로세스를 복사하는 함수이다. 이 때 파일 디스크립터 테이블과 그 내용도 함께 복사한다. 그래서 두 프로세스는 하나의 시스템 파일 엔트리를 참조한다. dub()는 파일 디스크립터 엔트리를 복사한다. 때문에 파일 디스크립터는 다르지..
유닉스 파일 시스템 출처 : 아주대학교 시스템 소프트웨어 보안 강의자료 /* * 공부한거 정리하는거라 틀린게 있을 수도 있어요... * 내용에 틀린게 있으면 알려주세요!! */ 유닉스 시스템의 가장 중요한 특징중 하나는 파일 시스템이다. 유닉스 파일 시스템은 수직적 구조, access control 등의 특징이 있지만 이번 포스팅에선 프로그래밍에서 파일을 사용하기 위해 파일 관련 시스템 호출 구조와 주로 사용하는 함수에 대해 정리한다. File Descriptor Table 유닉스의 프로세스는 각각 파일 디스크립터 테이블을 갖는다. 테이블에는 각 파일의 플래그와 시스템 파일 테이블의 위치 정보가 저장된다. 파일 디스크립터 테이블의 인덱스를 파일 디스크립터라고 한다. 파일 디스크립터는 0부터 시작하는 정수인데 0은 표준입력,..