검색 여닫기
검색
메뉴 여닫기
555
262
4
2.2천
noriwiki
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
파일 올리기
환경 설정 메뉴 여닫기
notifications
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
user-interface-preferences
한국어
개인 도구
로그인
Exec 문서 원본 보기
noriwiki
문서 공유하기
다른 명령
←
Exec
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
[[분류: POSIX 시스템 콜]] == 개요 == 다른 프로그램을 실행시킨다. 이때 다른 프로그램은 현재 프로세스의 메모리를 덮어쓰게 된다. : execve(flinename, argv, envp) # filename: 실행시킬 프로그램을 서술한다. # argv: 실행시킬 프로그램의 파라미터를 가르키는 포인터를 서술한다. # envp: 프로그램이 어떤 환경에서 실행될지를 기술한다. Exec는 Permission error, no executable, [[OOM]]등의 이유로 실패할 수 있다. == 알고리즘 == [[파일:Exec system call.png|500px|섬네일|가운데]] 파일의 아이노드를 읽어서 실행가능한지를 확인하고, 파일의 헤더를 확인하여 수행가능한지 확인한후 최종적으로 수행가능한 파일인지 확인한다. 그리고 exec시스템 파라미터를 system space에 카피한다. 그리고 현재 프로세스의 스택과 같은 모든 리전을 커널에 되돌린다. 그후 새로 로딩할 프로그램의 스택, 데이터, 텍스트와 같은 메모리 리전을 새로이 할당하고 exec 파라미터를 system space에서 user stack region으로 카피한다. 그후 레지스터값을 초기화 시키고 프로그램을 수행할 준비를 마치면 된다. == Environment Variables == EV값은 부모 프로세스에서 자식 프로세스로 상속되게 된다. 일반적으로 환경 변수는 .login, .cshrc, .bashrc와 같은 파일에 저장된다. 환경변수는 기본적으로 상속되지만 exec의 파라미터로 새로운 환경 변수를 넘길 수도 있다. 각각의 환경 변수는 : "Name=Value" 의 꼴을 가지고 있다. 각각의 문자열은 \0으로 종료되며, 마지막 환경변수는 NULL 포인터를 가르킨다. [[getenv]], [[putenv]]참고
Exec
문서로 돌아갑니다.