IPC 기법 중 파이프, 메시지큐, 공유메모리 기법을 알아보자.
char* msg = "Hello Child Process!";
int main()
{
char buf[255];
int fd[2], pid, nbytes;
if (pip(fd) < 0) // pipe(fd)로 파이프 생성
exit(1);
pid = fork(); // 함수 실행 다음 코드부터 부모/자식 프로세스로 나뉨
if (pid > 0) { // 부모 프로세스는 pid에 실제 프로세스 ID가 들어감
wrtie(fd[1], msg, MSGSIZE); //fd[1]
exit(0);
}
else { // 자식 프로세스는 pid가 0이 들어감
nbytes = read(fd[0], buf, MSGSIZE); // fd[0]으로 읽음
exit(0);
}
return 0;
}
msqid = msgget(key, msglfg)
msgsnd(msqid, &sbuf, buf_length, IPC_NOWWAIT)
msqid = msgget(key, msgflg)
msgrcv(msqid, &rbuf, MSGSZ, 1, 0)
shmid = shmget((key_t)1234, SIZE, IPC_CREAT | 0666))
shmaddr = shmat(shmid, (void *)0, 0)
strcpy((char *)shmaddr, "Linux Programming")
printf("%s\n", (char *)shmaddr)