子进程execl时出错
我在main函数里先打开一个文件,什么文件操作也没有,然后关闭文件. 之后再用fork创建一个子进程,创建子进程成功。然后用execl使子进程执行另一个程序b。但b程序并没有执行,我检查了一下execl的返回值为-1,是出错。errno为14,查找对应的错误是EFAULT 参数filename所指的字符串地址超出可存取空间范围。而当我将前面的打开和关闭文件的代码去掉,b程序又在子进程中执行正确。这是为什么呢?5 z) @" a5 ~( b( L3 A0 Y* J- I
fopen
* Q6 u$ T. k! T/ U( ?$ _: O) S8 Ofclose
5 [% r, u% n9 }( Mpid = fork();7 }; z5 r2 l! d7 ]
if(pid == 0)9 T* `8 ~! B$ r: D' V9 D2 \4 U
execl("/b", "/b");6 L. V! @8 B) _$ P
else d. Q8 X: H/ \
...