IPC(Inter Process Communication) 에는 message queue(-q) shared mem(-m) semaphore(s) 의 자원을 사용하는데 이 자원들의 상태를 보여준다.()안은 하부명령어
자원의 반납은 ipcrm(IPC remove)명령.
공유메모리란 원래 하나의 프로세스는 해당 하는 한개(?)의 메모리를 갖는다. 하지만 공유메모리를 사용하게 되면 여러 프로세스들이 한개의 메모리를 말 그대로 공유할 수 있게된다. 프로세스가 그 메모리를 쓸때 자신에게 붙이고, 쓰지 않을때는 버리게된다.
int shget ( key_t key, int size, int shmflg );
이 함수는 공유메모리의 id를 리턴하는 함수이다. key는 말 그대로 key값, size도, shmflg는 권한이다.
IPC_CREATE| 와 함께 사용한다. IPC_CREATE는 커널에 세그먼트가 없다면 새롭게 만든다.
int shmat ( int shmid, char *shmaddr, int shmflg);
이 함수는 shget을 통해 얻은 id에 해당하는 메모리주소를 리턴하는 함수이다.
shmid는 첫번째 함수로 얻은 id값을 써주고 두번째와 세번째 인자값에는 보통 NULL,0 을 쓴다고 한다.
NULL,0 을 쓰게되면 커널에 매핑되지 않은 지역을 자동으로 찾는다고 한다.
#include <stdio.h>
#iinclude <sys/shm.h>
#include <sys/ipc.h>
int main(){
int shmadrr;
char *shmid;
shmid = shmget(key_t의 값, 메모리 size, 파라미터값-메모리고유파라미터아닐까?);
shmadrr = shmat(shmid, NULL, 0);
printf("%s", shmadrr);
return 0;
}
'os > 리눅스' 카테고리의 다른 글
httpd 설정 (0) | 2009.10.14 |
---|---|
vsftpd 설정 (0) | 2009.10.14 |
fedora ifconfig sevice command not found (0) | 2009.10.10 |
Ubuntu nabi 설치 (0) | 2009.10.07 |
레드햇 9.0 한글 깨짐 !!! (0) | 2009.10.06 |