| lenovo 回复于:2003-11-20 17:35:06
|
[quote:8dbcbc400c="dysnake"]执行的子进程可以使用此描述子吗??[/quote:8dbcbc400c]
应该是不行的。
|
| dysnake 回复于:2003-11-20 17:35:33
|
没人试过吗,我记得在那儿看到在某种情况是不行的必须使用管道传输。
谁知道??斑竹知道吗??

|
| lenovo 回复于:2003-11-20 17:37:11
|
[quote:3e86f501ec="dysnake"]没人试过吗,我记得在那儿看到在某种情况是不行的必须使用管道传输。
谁知道??斑竹知道吗??
[/quote:3e86f501ec]
呵呵,我也记得说是可以用管道传送,
我也没用过。
|
| dysnake 回复于:2003-11-20 17:39:38
|
我也记得不行,但是我的领导说可以,看来必须作个实验。
|
| river_wave 回复于:2003-11-20 17:44:33
|
可以!
|
| dysnake 回复于:2003-11-21 08:05:30
|
是否说明exec的参数传入相近于管道传入??
|
| river_wave 回复于:2003-11-21 09:17:47
|
跟管道无关,只是参数的传递;不过exec的参数全是字符型的,必须转换
|
| 非常开心 回复于:2003-11-21 11:07:27
|
老兄,完全没有问题,尽管用好了,我曾经这样用过!
主进程得到一个连接socket,然后exec 其他程序,将socket描述符当作参数传递过去,一点问题都没有:) 不过参数要转换成字符串的
|
| dysnake 回复于:2003-11-21 14:02:44
|
是强制转换??新进程再转换回来??
|
| 罗格纳 回复于:2003-11-21 15:58:37
|
进程exec后,还是同一个进程,打开的描述字都不变,只是代码空间被覆盖,所以要把描述字传给exec(只是告诉exec进程,它打开过该描述字)。exec还有一些选项可以禁止描述字的传递。
|
| dysnake 回复于:2003-11-21 16:11:06
|
不知道理解的对不对。当fork后原先进程的所有的描述字子进程都继承了一套。exec函数执行后将进程的所有描述子及资源重新分配,因此原先的描述子关闭exec后的进程是无法使用的。

|
| 罗格纳 回复于:2003-11-21 17:05:38
|
先要明确描述字的打开状态和描述字的值。
对于一个处于打开状态的描述字,进程可以通过描述字的值来访问。
在exec之前打开的描述字,在exec之后仍处于打开状态,只是不知道描述字的值而已(因为代码空间被覆盖)。因此只要把描述字的值传给exec就可以了。(不需要再次打开!)
|