execl 2

Shell 실행 함수 종류

execl() int execl(const char *path, const char *arg0, ..., const char *argn, (char *)0); 디렉토리와 파일 이름이 합쳐진 절대 경로로써 파일 이름을 입력해 주어야 한다. 그리고 argv[n]의 값을 수정할 수 있다. e.g. execl("/bin/sh", "/bin/sh", NULL); execle() int execle( const char *path, const char *arg ,..., char * const envp[]); execl()과 같지만 환경변수까지 설정할 수 있는 함수이다. 다른건 execl()과 같음. execlp() int execlp( const char *file, const char *arg, ...); 환경..

리눅스 프로세스 생성, 실행 그리고 제어

프로세스 생성 자식 프로세스를 생성하는 fork 함수에 대해 알아보자. 보다시피 반환값을 2가지 가진다 (실패 제외) 자식프로세스 값, 부모 프로세스 값. 자식은 getppid() 함수를 이용해 부모 프로세스의 pid를 얼마든지 알아낼 수 있고, 부모는 하나뿐이지만 부모는 여러개의 자식프로세스를 가질 수 있고 별도의 자식pid를 알아낼 함수가 존재하지 않는다. 보통 자식프로세스가 생성되면 부모의 pid값에 +1한 값이 자식프로세스의 pid이다. fork가 자식프로세스를 생성하고 나서도 부모, 자식 프로세스 두가지 모두 정상적으로 실행된다. fork로 생성된 자식프로세스는 부모 프로세스의 복사본이다. 다만, 코드(텍스트) 세그먼트는 복사하지 않고 공유한다. 중요한 것은, 자식은 부모와 메모리 영역을 공유하..

반응형