在SkyEye中调用fork的问题
在skyeye模拟的lubbock开发板上运行一个forktest的程序发现一个问题:forktest.c内容如下:
#include <stdio.h>
int main(void)
{
int pid;
pid = fork();
if (pid == 0)
printf("\t");
else
printf("\t");
printf("pid = %d\n", pid);
return 0;
}
然后用xscale-gcc-3.3.3的arm-linux-gcc编译,在skyeye下运行结果如下:
pid = 126
而在PC机上gcc编译,运行的结果如下:
pid = 0
pid = 2969
在skyeye中似乎子进程没有被执行?这个是什么问题?
在skyeye上运行busybox时发现同样的问题,导致启动时shell无法加载。 已找到问题原因,是xscale-gcc-3.3.3交叉编译工具链的问题,更换一个版本即可。
现已成功在skyeye模拟的lubbock上运行linux2.6.7+busybox-1.00rc3+tinylogin-1.4。 厉害啊,不知道你换成哪个版本了 arm-linux-gcc -v
Reading specs from:
/usr/local/arm/lib/gcc-lib/arm-linux/3.2.3/specs
Configured with:
./configure
--prefix=/usr/local/arm
--target=arm-linux
--enable-shared
--enable-threads=posix
--with-system-zlib
--disable-checking
--enable-__cxa_atexit --enable-languages=c,c++
Thread model:
posix
Gcc version:3.2.3 bucketxp的问题比较怪.
好象chenyu版主用xscale-gcc-3.3.3跑的linux2.6.7没有问题.
见http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=76267
forktest的fork出来的子进程没有被调度
不知道内核是否正常?
不知道跟编译器的过分优化有没有关系?可以去掉-O测一下.
挺有趣的问题,可惜手头没有3.3.3和linux2.6.7 有意思。 会不会是因为编译SkyEye使用的gcc是3.2.3的,而xscale-gcc-3.3.3版本是3.3.3的,所以两者有一些冲突导致fork()调用有问题呢?瞎猜的:P 这两者没有任何关系。
页:
[1]