最近在看ipc的东西,了解到nodejs的cluster模式时,master在接收http连接后会将文件句柄传递给cluster去处理。那么问题来了。 master在传递文件句柄时传了其实是文件描述符,但是据我所知,文件描述符是文件描述符表的下标。而每个进程有自己独立的文件描述符表,fork出来的cluster进程除了fork前的文件描述符是从master copy了之外,后续建立socket时的文件描述符应该是master的文件描述符表独有的。那么master是怎么将自己独有的文件描述符发给cluster的呢? 求指教!!
看到一种说法,说传递的文件描述符就是打开文件表中的位置,并不是我理解的文件描述符的下标。 是这样吗?
看了很多人浏览了,但是没人回。不知道是不是因为问题太简单。😂 我自己查了很多资料最后发现。是通过uds(unix domain socket)的sendmsg函数传递的文件描述符。 (文件描述符代表的指针怎么传递的由Linux内核提供的CMSG_DATA函数处理,对开发者透明)。 这个问题算是初步结案了。结束!
能用就是干~,管他呢 [手动滑稽]
[CNodeMD]
@dbit-xia 不懂原理有时候想起来很难受。 就像你一直在用一个黑盒但是你不知道里面到底发生了什么,贼难受。😂