请教一个关于文件句柄传递的问题
发布于 6 年前 作者 Gitforxuyang 3130 次浏览 来自 问答

最近在看ipc的东西,了解到nodejs的cluster模式时,master在接收http连接后会将文件句柄传递给cluster去处理。那么问题来了。 master在传递文件句柄时传了其实是文件描述符,但是据我所知,文件描述符是文件描述符表的下标。而每个进程有自己独立的文件描述符表,fork出来的cluster进程除了fork前的文件描述符是从master copy了之外,后续建立socket时的文件描述符应该是master的文件描述符表独有的。那么master是怎么将自己独有的文件描述符发给cluster的呢? 求指教!!

4 回复

看到一种说法,说传递的文件描述符就是打开文件表中的位置,并不是我理解的文件描述符的下标。 是这样吗?

看了很多人浏览了,但是没人回。不知道是不是因为问题太简单。😂 我自己查了很多资料最后发现。是通过uds(unix domain socket)的sendmsg函数传递的文件描述符。 (文件描述符代表的指针怎么传递的由Linux内核提供的CMSG_DATA函数处理,对开发者透明)。 这个问题算是初步结案了。结束!

能用就是干~,管他呢 [手动滑稽]

[CNodeMD]

@dbit-xia 不懂原理有时候想起来很难受。 就像你一直在用一个黑盒但是你不知道里面到底发生了什么,贼难受。😂

回到顶部