현재 프로세스 경로

현재 프로세스 경로

(전체/절대 경로가 아닌) 상대 경로, 즉 현재 경로 아래에 파일을 출력하는 프로그램을 작성한다고 가정해 보겠습니다.

그런 다음 이를 컴파일하고 실행 파일을 일부 디렉토리에 저장합니다 path1.

  1. 이제 실행 파일을 실행하고 다른 dir 아래에 있습니다 path2. 실행 파일 path2path1.

    실행 파일이 파일에 쓰지 않는 이유가 궁금합니다 path1. 즉, "현재 경로"가 path2아닌 이유는 무엇입니까 path1?

  2. 실행할 때 실행 파일이 에 저장된 파일을 열면 에서 실행 파일을 실행하고 있고 실행 파일이 에 저장되어 있는데도 path3현재 경로가 되는 이유는 무엇입니까 ?path3path2path1

운영 체제는 프로세스가 실행되는 동안 프로세스의 현재 경로를 어떻게 할당하고 변경합니까?

답변1

질문 1: 프로그램이 설치된 디렉토리가 프로그램 실행시 프로세스의 초기 디렉토리가 아닌 이유는 무엇입니까?

사실 프로그램의 설치 경로는 중요하지 않으며, 중요한 것은 현재 프로그램의 경로입니다.아버지프로세스. 쉘에서 시작된 프로그램의 경우 상위 프로세스는 쉘 자체이므로 새 프로세스의 초기 현재 디렉토리는 쉘의 현재 디렉토리입니다.

질문 2:프로세스는 현재 디렉터리 외부에 파일을 어떻게 생성합니까?

파일 경로를 지정하는 방법에는 절대 경로와 상대 경로의 두 가지가 있습니다. 절대 경로는 /파일 시스템의 루트( )부터 시작하여 슬래시("/")로 시작하여 해석됩니다. 상대 경로는 프로세스의 현재 디렉터리에서 해석됩니다. 따라서 /path2과 이라는 두 개의 디렉토리가 있고 /path2/path3현재 디렉토리가 인 프로세스가 있는 경우 path2파일을 열 수 있습니다 path3/file. 경로는 상대 경로이므로(슬래시로 시작하지 않음) 현재 디렉터리에서 계산됩니다 path2. 마지막으로 새 파일의 전체 경로는 입니다 /path2/path3/file. 따라서 특정 디렉터리에서 실행되는 프로세스는 해당 디렉터리 외부에 파일을 생성할 수 있습니다.

질문 3: 운영 체제는 프로세스가 실행되는 동안 프로세스의 현재 경로를 어떻게 할당하고 변경합니까?

프로세스는 시스템 호출을 통해 운영 체제에 현재 디렉터리를 변경하도록 요청할 수 있습니다 chdir(2)(새 디렉터리 등에 대한 권한이 필요한 경우). 이는 다른 메커니즘이며 파일 열기와 관련이 없습니다. 파일 열기 open(2)는 다른 시스템 호출(예: .

관련 정보