LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1014|回复: 7

好像是mingw的一个bug,不知道有没有谁还遇见过

[复制链接]
发表于 2010-1-11 20:08:52 | 显示全部楼层 |阅读模式
在C中return -1
但是在sh里echo$? 看到的却是0
把-1改成255就没有问题
有没有哪位也遇见过这种问题?

efan@EFAN-DT ~
$ ls
_viminfo  test.c

efan@EFAN-DT ~
$ gcc test.c -o test

efan@EFAN-DT ~
$ ./test.exe

efan@EFAN-DT ~
$ echo $?
0

efan@EFAN-DT ~
$ cat test.c
int main()
{
        return -1;
}

efan@EFAN-DT ~
$ sh --version
GNU bash, version 3.1.0(1)-release (i686-pc-msys)
Copyright (C) 2005 Free Software Foundation, Inc.
发表于 2010-1-12 13:14:15 | 显示全部楼层
不是 bug,windows 中控制台程序返回值的结构和定义跟 linux 不同。你可仔细搜一下相关文档。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-12 14:45:15 | 显示全部楼层
Post by poet;2063676
不是 bug,windows 中控制台程序返回值的结构和定义跟 linux 不同。你可仔细搜一下相关文档。

谢谢了
不过搜了一下,没有找到
我原想msys或者sh应该会处理这种情况的
cygwin都没有这种问题
Linux很多程序都是return -1.
这样的话在MingW下很容易出问题
我是在configure一个软件时发现的(configure时有大量的命令根据返回值做判断)
回复 支持 反对

使用道具 举报

发表于 2010-1-14 12:16:26 | 显示全部楼层
Post by jequi;2063571
在C中return -1
但是在sh里echo$? 看到的却是0
把-1改成255就没有问题
有没有哪位也遇见过这种问题?

efan@EFAN-DT ~
$ ls
_viminfo  test.c

efan@EFAN-DT ~
$ gcc test.c -o test

efan@EFAN-DT ~
$ ./test.exe

efan@EFAN-DT ~
$ echo $?
0

efan@EFAN-DT ~
$ cat test.c
int main()
{
        return -1;
}

efan@EFAN-DT ~
$ sh --version
GNU bash, version 3.1.0(1)-release (i686-pc-msys)
Copyright (C) 2005 Free Software Foundation, Inc.


linux的返回值只能用8位来表示,0~255,如果是-1的话,因为shell会把它当做无符号的整数来看,所以得到的是255.显示0就不得而知了~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-14 15:02:45 | 显示全部楼层
Post by pengjianbokobe;2064123
linux的返回值只能用8位来表示,0~255,如果是-1的话,因为shell会把它当做无符号的整数来看,所以得到的是255.显示0就不得而知了~

在linux下面,return -1会显示为255
在Mingw下,将-1改成255后,echo $?才会显示255,否则是0
有没有谁也碰到这样的情况?
需要确认是不是我机器的问题
回复 支持 反对

使用道具 举报

发表于 2010-1-14 15:12:07 | 显示全部楼层
我测试过了,跟你的结果一样,是mingw的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-14 15:30:17 | 显示全部楼层
Post by realtang;2064163
我测试过了,跟你的结果一样,是mingw的问题。

google了一下,没有搜到类似的问题。比较奇怪
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-16 22:50:20 | 显示全部楼层
的确是mingw的问题,有一个Pending的bug report:
https://sourceforge.net/tracker/ ... 435&atid=102435
回复 支持 反对

使用道具 举报

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

本版积分规则

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