免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 16579 | 回复: 40
打印 上一主题 下一主题

请问errno的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-19 09:59 |只看该作者 |倒序浏览
请问errno是操作系统变量,程序怎么引用?
在c中errno的定义在什么地方,类似的还有那个环境变量指针,它是怎么指向环境指针的?

一直很迷惑.还有就是
errno对应一个字符串,这个应该是库的作用吗?操作系统是不是只给出errno呢?

论坛徽章:
0
2 [报告]
发表于 2005-11-19 10:03 |只看该作者
errno.h,对应整数

论坛徽章:
0
3 [报告]
发表于 2005-11-19 10:11 |只看该作者
谢谢.
erron是通过系统调用得到的吗?我看到我的编译器里面的是一个函数的返回值

论坛徽章:
0
4 [报告]
发表于 2005-11-19 15:32 |只看该作者
errno不属于操作系统,errno只是C库里的一个变量。
include <errno.h>,里面会有extern int errno;的声明。
通常用法是,系统调用或库函数成功返回0,失败返回-1,而失败原因在errno里。
errno是个整数,不是数组,而是某个数组的下标,那个数组通常也不需要直接访问,
要想输出对应的错误信息,可以用perror()。

论坛徽章:
0
5 [报告]
发表于 2005-11-19 19:32 |只看该作者
楼上有些地方值得商榷,extern int errno;正好说明不是C库定义的,errno是操作系统定义,源码如下

  1. *  linux/lib/errno.c
  2. *
  3. *  Copyright (C) 1991, 1992  Linus Torvalds
  4. */

  5. int errno;

复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2005-11-19 21:11 |只看该作者
原帖由 er 于 2005-11-19 19:32 发表
楼上有些地方值得商榷,extern int errno;正好说明不是C库定义的,errno是操作系统定义,源码如下
[code]
*  linux/lib/errno.c
*
*  Copyright (C) 1991, 1992  Linus Torvalds
*/

int errno;

[/ ...

彻底错误。完全错误。错误得一塌糊涂。

论坛徽章:
0
7 [报告]
发表于 2005-11-19 21:14 |只看该作者
原帖由 flw 于 2005-11-19 21:11 发表

彻底错误。完全错误。错误得一塌糊涂。


好多“错误”啊

论坛徽章:
0
8 [报告]
发表于 2005-11-19 22:13 |只看该作者
原帖由 er 于 2005-11-19 19:32 发表
楼上有些地方值得商榷,extern int errno;正好说明不是C库定义的,errno是操作系统定义,源码如下
[code]
*  linux/lib/errno.c
*
*  Copyright (C) 1991, 1992  Linus Torvalds
*/

int errno;

[/ ...


完全正确!正确的令人目瞪口呆! errno这个变量是实现系统调用的C函数定义的,而系统调用属于操作系统的内容,因此可以说是操作系统定义的. 之所以有些库函数也影响errno,是因为这些库函数的实现是调用了"系统调用""

论坛徽章:
0
9 [报告]
发表于 2005-11-19 22:18 |只看该作者
俺被你们搞晕了   *___*~~~

我这么用,对吗?

  1. if( (pid=fork()) < 0 ){
  2.    fprintf(stderr,"%sn",strerror(errno));
  3.    exit( -1 );
  4. }
复制代码

论坛徽章:
0
10 [报告]
发表于 2005-11-20 00:05 |只看该作者
原帖由 nhw_cs 于 2005-11-19 22:13 发表


完全正确!正确的令人目瞪口呆! errno这个变量是实现系统调用的C函数定义的,而系统调用属于操作系统的内容,因此可以说是操作系统定义的. 之所以有些库函数也影响errno,是因为这些库函数的实现是调用了"系 ...



操作系统都是用c来写的,还能讲什么?而且这个应该是POSIX标准中的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP