日期:2014-05-16  浏览次数:20552 次

不同进程间描述符的传递?谁能帮忙解释下呢?
文件描述符,不就是一个整形吗?
传个整形过去,跟传描述符本质上有什么区别没有阿?

哪位大侠能够解释下呢?

一般传递描述符这种情况,是在什么需求的情况下才传的?这个技术是为了满足哪方面的需求呢?

------解决方案--------------------
你看到的文件描述符,是一个整形,但内核维护了对应的数据结构信息什么的,没那么简单,且从一个进程传递到另一个进程后,文件描述符数字可能发生了必要的变化。
进程间传递描述符一 - sparkliang的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/sparkliang/article/details/5486069
------解决方案--------------------
文件描述符,不就是一个整形吗?
形式上是一个非负整数,实际表示是一个索引值,指向内核维护的某个进程打开文件的记录表;
对内核而言,所有打开的文件都通过文件描述符进行引用,当打开一个文件或创建一个新文件时,内核向进程返回一个文件描述符;

传个整形过去,跟传描述符本质上有什么区别没有阿?
本质上没区别,一是可读性不强,二是不一定正确;

一般传递描述符这种情况,是在什么需求的情况下才传的?这个技术是为了满足哪方面的需求呢?
当读或写一个文件时,使用open等函数返回的文件描述符标识该文件,将其作为参数传递给read或write等函数进行读或写操作;
------解决方案--------------------
你简单的传递一个整数过去,对对方而言是没有实际意义的

必须使用专用的接口函数传递一个文件描述符,这样对接收方来说,相当于打开了一个新的描述符,这个描述符引用的对象鱼发送方的相同

一个典型场景:socket服务器,由一组进程组成
父进程只负责接收客户端连接,连接建立之后把描述符传递给空闲的子进程,子进程再根据接收到的描述符与客户端具体通信
------解决方案--------------------
引用:
你简单的传递一个整数过去,对对方而言是没有实际意义的

必须使用专用的接口函数传递一个文件描述符,这样对接收方来说,相当于打开了一个新的描述符,这个描述符引用的对象鱼发送方的相同

一个典型场景:socket服务器,由一组进程组成
父进程只负责接收客户端连接,连接建立之后把描述符传递给空闲的子进程,子进程再根据接收到的描述符与客户端具体通信


++ 套接字 没有你看到的表面那么简单就是一个整数的,内部实现是很复杂的