Provided by: manpages-ko_20050219-2_all bug

SYSTEM CALLS

       fork() fork() 후에 자식  프로세스는  연결된  공유  메모리  세그먼트들을
              상속한다.

       exec() exec()    후에    모든    연결된    공유   메모리   세그먼트들은
              분리된다.(파괴되는것이 아니다.)

       exit() exit() 시 모든 연결된 공유 메모리 세그먼트는  분리된다.(파괴되는
              것이 아니다.)

       실패시  두  함수는  모두 에러를 가리키는 errno-1 를 리턴하며 그렇지
       않으면 shmat 는 연결된 공유 메모리 세그먼트의 주소를 리턴한다.   그리고
       shmdt0 를 리턴한다.

       shmat 가 실패할때,  리턴되는 errno 는 다음값중 하나로 설정된다.

       EACCES     호출  프로세스는  요구된  연결  타입에  대한 접근 허가권들이
                  없다.

       EINVAL     유효하지 않은 shmid  값,  정렬되지  않은(즉,  페이지  정렬이
                  아니고  SHM_RND가  지정되지  않았다.)   또는  유효하지  않은
                  shmaddr 값, 또는 brk 에 연결 실패

       ENOMEM     기술자나 페이지 테이블들을 위해 메모리를 할당할수 없다.

       shmaddr 에 연결된 공유 메모리 세그먼트가 없다면 함수 shmdt 는  실패할수
       있다.  이경우 리턴되는 errnoEINVAL 으로 설정될 것이다.

       fork(2)  시스템  콜  실행시  자식  프로세스는  연결된  모든 공유 메모리
       세그먼트둘을 상속한다.

       execve(2) 로 실행되는 프로세스에 연결된 공유 메모리  세그먼트들은  결과
       프로세스에 연결되지 않을 것이다.

       다음은 shmat 시스템 콜에 영향을 미치는 시스템 인자이다:

       SHMLBA     Segment   low   boundary   address   multiple.    페이지들은
                  정렬되어야 한다.  현재 수행시 SHMBLA 값은 PAGE_SIZE 이다.

       수행시 프로세스당 공유 메모리  세그먼트  최대수에  어떠한  내부  제한도
       없다.  (SHMSEG)

       SVr4,  SVID.   SVr4는  EMFILE 에러 조건을 문셜했다.  SVID-v4에shmaddr
       인자는 char *const void * 로 바뀌었으며 shmat()의 리턴 타입은 char
       *void  *  으로  바뀌었다.  (Linux libc4 와 libc5는 char * 타입을
       가지고 있다.; glibc2는 void * 을 가지고 있다.)

       ipc(5), shmctl(2), shmget(2)

       정걷<skyeyes@soback.kornet.net>, 2000년 5월 16일