+ -
当前位置:首页 → 问答吧 → dup需要调用两次

dup需要调用两次

时间:2011-07-19

来源:互联网

最近在写Android sensor hardware的代码,遇到一个奇怪的问题:
  在某个进程(sensor_control_open_data_source)open一个input设备,得到fd,然后用native_handle_t传送,在另一个进程(sensor_data_open)接收到这个native_handle结构,然后调用dup进行复制,结果为0?不管哪个设备都是这样,但是如果再调一次dup,就能得到正确的fd,这个问题纠结了,求解

作者: pippodao   发布时间: 2011-07-19

0也是一个合法的描述符
你之前是不是关闭了0 ?

作者: justkk   发布时间: 2011-07-19

贴代码吧.

作者: abao623660072   发布时间: 2011-07-19

fd = dup(nh->data[0]);
这里面nh->data[0]打出来是个正数,但是fd就是0了,得再调一次才是正数,而且用那个为0的fd去read是没有数据的,之后的那个就可以

作者: pippodao   发布时间: 2011-07-19