+ -
当前位置:首页 → 问答吧 → 弱弱地问二个问题

弱弱地问二个问题

时间:2010-08-13

来源:互联网

(1)在Linux 中不同的进程调用open后,没有调用close的情况下,会返回相同的fd值吗? 同一个的进程中的不同线程中呢?
(2) 类似问题1,如果调用socket后针对1中的两种情况会有什么结果? 同一个的进程中的不同线程用socket返回值作全局数组的下标,会不会冲突呢?冲突的含义为,如果两个socket fd 都没被关闭的情况下,返回的值一样。


望大虾指教。翻了一阵书,没找着结果。

作者: yangxiaoyuyxy1   发布时间: 2010-08-13

不会。unix的设计者不会这么弱智的。

作者: donglongchao   发布时间: 2010-08-13



QUOTE:
不会。unix的设计者不会这么弱智的。
donglongchao 发表于 2010-08-13 12:27




    那为什么每个进程中的 标准输入,输出,错误 都是 0,1,2呢,这不是相同了吗

作者: yangxiaoyuyxy1   发布时间: 2010-08-13

1)不同进程中,返回的open fd存在相同的情况,例如0、1、2就是很好的说明;但是同进程中不同线程返回的fd肯定是不相同的,因为线程只是共享进程的资源,没有资格申请独立的资源
)socket fd也是fd一种,肯定符合1中的。

作者: jiang1013nan   发布时间: 2010-08-13



QUOTE:
那为什么每个进程中的 标准输入,输出,错误 都是 0,1,2呢,这不是相同了吗
yangxiaoyuyxy1 发表于 2010-08-13 12:30




    每个进程都有自己的地址空间.这个fd只在这个进程(地址空间)是有意义的.

作者: liwangli1983   发布时间: 2010-08-13