2016-12-22 6 views
1

C로 미니 쉘을 개발해야합니다.이 프로젝트에서 우리는 지역 변수와 환경 변수를 다루어야합니다. 그래서 우리는 환경 변수를 공유하는 두 가지 프로세스를 가질 수 있습니다. 자식에서 변수를 생성하면 아버지와 반대로 볼 수 있습니다.C에서 LinkedList로 공유 메모리

선생님의 말 : 환경 변수는 실행되는 쉘의 첫 번째 복사본에 의해 생성되고 공유 된 메모리 영역에 저장되며 envp 배열에 정의 된 모든 변수로 초기화됩니다. 주어진 시간에 실행되는 셸의 마지막 복사본은 해당 공간을 파괴해야합니다. 이 공유 메모리 영역은 서브 디비전별로 메모리로 관리됩니다. 공유 메모리 영역은 동시 읽기가 가능한 동시 액세스 메모리 영역이지만 주어진 시간에 한 번만 쓰기가 가능합니다. 구현은 글쓰기를 우선시해야합니다. 포함 연결리스트와

그래서 우리가 공유 할 필요 메모리 :

  • 변수의 이름 (숯불 *)하는 shmget에 의해
  • INT 리턴()
  • 과는 shmat에 의해 숯불 * 반환(), 변수의 값

그러나 우리가 아버지에서 환경 변수를 만들 때 자식에는 없다.

이 방법이 올바르지 않다고 생각합니다. 어떻게이 문제를 나타낼 수 있습니까?

아마도 연결 목록을 사용하지 않습니까?

감사합니다.

TF.

+0

왜 공유 메모리입니까? 환경 변수는 이미 부모 프로세스와 자식 프로세스간에 공유됩니다. –

+0

먼저 쉘에서 명령이 어떻게 실행되는지 알아야합니다. 난 당신이 그것에 대한 exec() 시스템 호출을 사용해야한다고 생각합니다. –

+0

그래서 Inter Process Communication이 필요합니다. Wikipedia https://en.wikipedia.org/wiki/Inter-process_communication에는 좋은 옵션 목록이 있습니다. –

답변

1

나는 이해합니다! 선생님이 고정 크기의 공유 메모리 공간을 만들라고 말합니다! 지금은 간단합니다.

감사합니다.