0

我做了一个驱动程序(更简单的驱动程序)。

现在我通过 2 个进程(通过 fork())和 2 个线程打开设备文件。他们有什么区别??

4

1 回答 1

0

首先,当我看到您的问题时,我认为没有区别,只是增加了 fd 数字,从 3 开始并递增。怀疑是当您在主线程中打开设备节点时,您可以在线程中使用相同的 fd。当您通过 fork() 打开设备节点时,子进程也会继承文件描述符。重要的一点是,由于线程和子进程 (fork()) 继承了文件描述符,如果线程关闭 fd,则打开的设备节点实际上是关闭的,但在 fork() 的情况下,即使您关闭继承的 fd,设备节点未关闭,因为OF​​DT(打开文件描述符表)数据结构中的文件引用计数为 2,而不是线程的情况下为 1。希望这个答案能澄清你的疑问:-)。

于 2013-05-24T06:10:22.057 回答