QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1379|回复: 7

在SkyEye中调用fork的问题

[复制链接]
发表于 2004-9-19 11:38:37 | 显示全部楼层 |阅读模式
在skyeye模拟的lubbock开发板上运行一个forktest的程序发现一个问题:
forktest.c内容如下:

#include <stdio.h>

int main(void)
{
        int pid;

        pid = fork();
        if (pid == 0)
                printf("[Child Process]\t");
        else
                printf("[Parent Process]\t");
        printf("pid = %d\n", pid);

        return 0;
}
然后用xscale-gcc-3.3.3的arm-linux-gcc编译,在skyeye下运行结果如下:
[Parent Process]        pid = 126
而在PC机上gcc编译,运行的结果如下:
[Child Process]        pid = 0
[Parent Process]        pid = 2969
在skyeye中似乎子进程没有被执行?这个是什么问题?
在skyeye上运行busybox时发现同样的问题,导致启动时shell无法加载。
 楼主| 发表于 2004-9-20 20:39:21 | 显示全部楼层
已找到问题原因,是xscale-gcc-3.3.3交叉编译工具链的问题,更换一个版本即可。
现已成功在skyeye模拟的lubbock上运行linux2.6.7+busybox-1.00rc3+tinylogin-1.4。
回复

使用道具 举报

发表于 2004-9-20 21:33:01 | 显示全部楼层
厉害啊,不知道你换成哪个版本了
回复

使用道具 举报

 楼主| 发表于 2004-9-21 13:32:50 | 显示全部楼层
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
回复

使用道具 举报

发表于 2004-9-21 21:32:57 | 显示全部楼层
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
回复

使用道具 举报

发表于 2004-9-23 23:10:14 | 显示全部楼层
有意思。
回复

使用道具 举报

 楼主| 发表于 2004-9-24 23:13:32 | 显示全部楼层
会不会是因为编译SkyEye使用的gcc是3.2.3的,而xscale-gcc-3.3.3版本是3.3.3的,所以两者有一些冲突导致fork()调用有问题呢?瞎猜的
回复

使用道具 举报

发表于 2004-9-26 09:59:20 | 显示全部楼层
这两者没有任何关系。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 22:34 , Processed in 0.066651 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表