pipe의 file descriptor를 공유해서 사용 불가능 한가요?

rlj1202의 이미지

memory mapping으로 int변수들을 공유할수 있어서 int[2]로 파이프의 fd를 공유해 놓고 다른 프로세스에서 그놈을 가져다가 write, read를 하려고 햇더니 EBADF(0x9)라는 오류가 뜨네요.
일반적인 파이프는 부모 자식 프로세스에서만 사용 가능한가요?

익명_사용자의 이미지

서로 다른 프로세스사이에서 fd를 전달하고 싶으면
sendmsg()와 recvmsg()를 사용하면 됩니다.

PHP에는 socket_sendmsg()와 socket_recvmsg()란 이름으로 제공되어지는것 같네요.
안타깝게도 php.net에도 별다른 설명이 없네요.

http://php.net/manual/en/function.socket-sendmsg.php

아래의 검색결과를 보면 C에서 어떻게 sendmsg() recvmsg()를 이용해 fd를 주고받는지 쉽게 찾을수 있습니다.
https://www.google.com/?#q=sendmsg+recvmsg+file+descriptor+passing

그거 참조해서 php의 socket_sendmsg()와 socket_recvmsg()를 연구해보면 답이 나오지않을까 싶네요.

rlj1202의 이미지

감사합니다!