2013-07-02 3 views
1

포크가 자식 프로세스를 생성 한 다음 자식 프로세스에서 execve하면 프로그램이 일부 환경 변수를 설정하여 실행한다는 것을 알고 있습니다.부모 프로세스에서 자식 프로세스의 환경 변수를 읽을 수 있습니까?

여기 내 태스크는 부모 프로세스 parent1이 fork/exec 절차에 따라 Child1 프로세스를 처음 생성하고 "CHILD = first"환경 변수를 설정했습니다.

나중에 부모 프로세스의 실행에서 같은 fork/exec 절차를 따라 다른 하위 프로세스 Child2를 만들었습니다. 이 child2에는 "CHILD = second"로 설정된 환경 변수가 있습니다.

이제 친 프로세스의 실행에서 env 값을 기반으로하는 일부 작업의 경우 parent1에서 child1 및 child2의 모든 환경 변수를 읽어야합니다. 상위 프로세스에서이 하위 환경 변수를 읽을 수 있습니까? 그렇다면 어떻게 할 수 있습니까?

+0

파이프와 같은'IPC' 메커니즘을 사용하여 확인할 수 있습니다 .. – VoidPointer

+0

부모 내에서 "하위 상태"를 유지하는 것이 왜 좋은가요? – trojanfoe

+1

왜 이것을 원하니? 부모는 자신의 데이터 구조에서 자식에 대한 흥미로운 정보를 유지해야하며 아마도 프로세스 ID로 인덱싱됩니다. – fizzer

답변

1

Linux의 /proc/<pid>/environ에서 환경을 읽을 수 있습니다. 변수는 널 문자로 구분됩니다.

+2

'/ proc//environ'의 값은 동적으로 업데이트되지 않고 프로세스의 초기 환경 만 표시합니다. CHILD의 가치가 pre-fork로 설정되어 있는지 아니면 단지 자식에서만 설정되어 있는지에 대한 질문은 명확하지 않습니다. 따라서/proc//environ을 읽는 것이 유용하지 않을 수 있습니다. –

+0

흠, 그럴 경우 파이프, 파일 또는 공유 메모리를 통해 IPC가 필요할 것입니다. – ams

관련 문제