System V, Message Queue에서 마지막으로 메시지를 읽어간 프로세스는?

|

Shared Memory도 그렇고 Message Queue도 그렇고 System V 계열 ipc 들은 마지막 접근한 pid를 기록해둔다.

한 시스템에 프로세스들이 복잡하게 올라가 있고 Message Queue를 사용해서 서로 통신을 한다고 했을 때, 간혹가다가 실수로 인해 특정 프로세스가 잘못 메시지를 가져가는 수가 생긴다. 프로세스 개수가 많아져 버리면 요걸 찾아내는게 좀처럼 힘든데, 어떤 놈이 메시지를 가져갔는지 간단하게 찾아볼 수 있다. (단, 마지막으로 넣고 가져간 놈만 찾을 수 있다.)

# ipcs -q -p

------ Message Queues PIDs --------
msqid      owner      lspid      lrpid
262144   elenoa       13263     13240
32769    elenoa       11899     13240
65538    elenoa           0         0
98307    elenoa           0         0
131076   elenoa       13240     13240
163845   elenoa        8024      8197
196614   elenoa           0         0
229383   elenoa       13240     13240
294920   elenoa       13240     13240
...

#


요런 식으로 나오게 된다.
lspid는 마지막으로 전송한 pid고 lrpid는 마지막으로 읽어간 pid인듯 하고.

Shared Memory는 조금 달라서 생성한 pid와 마지막으로 접근한 pid를 기록한다.

And