linux中errno使用

当linux中的C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。有下面几种方法可以方便的得到错误信息
  (1)void perror(const char *s)
函数说明
perror ( )用来将上一个函数发生错误的原因输出到标准错误(stderr),参数s 所指的字符串会先打印出,后面再加上错误原因 字符串。此错误原因依照全局变量 errno 的值来决定要输出的字符串。
  (2) char *strerror(int errno)
将错误代码转换为字符串错误信息,可以将该字符串和其它的信息组合输出到用户界面例如
fprintf(stderr,"error in CreateProcess %s, Process ID %d ",strerror(errno),processID)
注:假设processID是一个已经获取了的整形ID
  (3)printf("%m", errno);
另外不是所有的地方发生错误的时候都可以通过error获取错误代码,例如下面的代码段

#include"stdio.h"
#include "stdlib.h"
#include "errno.h"
#include "netdb.h"
#include "sys/types.h"
#include "netinet/in.h"
int main (int argc, char *argv[])
{
struct hostent *h;
if (argc != 2)
{
fprintf (stderr ,"usage: getip address\n");
exit(1);
}

if((h=gethostbyname(argv[1])) == NULL)
{

herror(“gethostbyname”);
exit(1);
}

printf(“Host name : %s\n”, h->h_name);
printf(“IP Address : %s\n”, inet_ntoa (*((struct in_addr *)h->h_addr)));
return 0;
}


  通过上面的代码可以看到:使用gethostbyname()函数,你不能使用perror()来输出错误信息(因为错误代码存储在 h_errno 中而不是errno 中。所以,你需要调用herror()函数。
你简单的传给gethostbyname() 一个机器名(“bbs.tsinghua.edu.cn”),然后就从返回的结构struct hostent 中得到了IP 等其他信息.程序中输出IP 地址的程序需要解释一下:h->h_addr 是一个char*,但是inet_ntoa()函数需要传递的是一个struct in_addr 结构。所以上面将h->h_addr 强制转换为struct in_addr*,然后通过它得到了所有数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity3d 捕获系统日志,来处理一些问题

注册系统日志回调,根据日志内容和类型处理一些特殊问题 using UnityEngine; using System.Collections;public class SetupVerification : MonoBehaviour {public string message "";private bool badSetup false;void Awake (){Application.RegisterL…

em算法 实例 正态分布_EM算法解GMM

看了很多介绍EM算法的文章,但是他们都没有代码,所以在这里写出来。Jensen 不等式参考期望最大算法Jensen不等式在优化理论中大量用到,首先来回顾下凸函数和凹函数的定义。假设 是定义域为实数的函数,如果对于所有的 , …

html5 webview,HTML5+学习历程之webview经典案例

看了这么多app,其实基本布局使用的最多的无非两种,如下图:类似微信类似QQ在这里小编简单说下这两种布局简单的实现思路,当然如果你还有更好的方法,请在下面留言,让更多人知道你更好的方法!第一种…

C函数的实现(strcpy,atoi,atof,itoa,reverse)

在笔试面试中经常会遇到让你实现C语言中的一些函数比如strcpy,atoi等 1. atoi 把字符串s转换成数字 int Atoi( char *s ) {int num 0, i 0;int sign 1;for( i0; isspace(s[i]); i );sign (s[i] -)? -1:1;if( s[i] || s[i] - )i;for( ;isdigit(s[i]); i ){n…

bbb sdk6 ll_rw_block分析

ll_rw_block是文件系统对下访问实际的块设备驱动的接口,应用程序对实际文件(非设备文件)的操作,最终都是 通过文件系统来调用ll_rw_block来操作实际的存储设备的。 当然ll_rw_block的实际作用远非一个接口那么简单,他…

wifi 小米pro 驱动 黑苹果_搞定小米黑苹果自带WIF,又可省一个USB接口了

首先声明我的是小米笔记本PRO版本的,其他版本的没有经过测试,但理论都是没有问题的,其他版本的朋友,喜欢折腾的话,可以试试!自用版本关于小米笔记本安装黑苹果,网上一直都有很多链接&#xff0c…

教师资格证计算机考察知识点,教师资格证考试信息技术常考知识点同步练习题.docx...

教师资格证考试信息技术常考知识点同步练习题一、信息的定义及特征( 一) 信息定义信息是通过文字、数字、图像、图形、声音、视频等方式进行传播的内容。说明:信息定义考查的方式有两类:一类是选出四个选项中是信息的 ; 另一类是判断选择题,选…

machine learning for hacker记录(4) 智能邮箱(排序学习推荐系统)

本章是上一章邮件过滤技术的延伸,上一章的内容主要是过滤掉垃圾邮件,而这里要讲的是对那些正常的邮件是否可以加入个性化元素,由于每个用户关心的主题并非一样(有人喜欢技术类型的邮件或者购物促销方便的内容邮件等)。…

代理模式 委派模式 策略模式_策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意…

云南计算机专业知识真题,2014年云南省事业单位考试专计算机专业知识模拟真题.doc...

2014年云南省事业单位考试专计算机专业知识模拟真题1 在Word中替换的快捷键是____。A、CTRLFB、CTRLHC、CTRLSD、CTRLP2 在Word中打印的快捷键是____。A、CTRLFB、CTRLHC、CTRLOD、CTRLP3 在Word中打开新文档的快捷键是____。A、CTRLFB、CTRLHC、CTRLOD、CTRLP4 在Word中&#…

bbb mmc_blk_probe 分析

bbb 的 emmc驱动在drivers\mmc\card\block.c,其mmc_dirver结构体如下, 根据以往平台总线驱动模型的经验来看的话,内核里应该有mmc_devices结构体,并且 其name也为"mmcblk",这样其probe函数将被调用&#x…

培智学校计算机课教案,培智数学教案

教学内容:11—20以内数的认识 写数 教学目的:1、使学生能初步地数、读、写(本节课重点看图写20以内的数。) 2、初步会写小棒图、数位表上的数,掌握20以内数的顺序。3、初步简单掌握20以内数的组成。 教学重点:学生看图会数数量并会…

例2-1

#include<stdio.h> int main(void) {printf("Hello World!\n");return 0; } 转载于:https://www.cnblogs.com/520zy/p/3348951.html

java第七章jdbc课后简答题_Java周测题08.13

1.关于Mybatis的描述正确的是&#xff1a;Mybatis是持久层框架&#xff0c;Mybatis封装了JDBC&#xff0c;Mybatis简化了代码的编辑和使用&#xff0c;Mybatis是一个半ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;Mybatis采用了OCP(对象关系映射)的方式封装了数据…

linux中probe函数中传递的参数来源(上)

linux中probe函数传递参数的寻找&#xff08;上&#xff09; 上一篇中&#xff0c;我们追踪了probe函数在何时调用&#xff0c;知道了满足什么条件会调用probe函数&#xff0c;但probe函数中传递的参数我们并不知道在何时定义&#xff0c;到底是谁定义的&#xff0c;反正不是我…

2018高职计算机474分排名,2018年高职分类考试招生录取分数线出炉

原标题&#xff1a;2018年高职分类考试招生录取分数线出炉记者 李洁昨天&#xff0c;实况新闻—重庆时报记者从市教育考试院获悉&#xff0c;2018年我市高等职业教育分类考试招生录取最低控制分数线已划定。一、普高类(一)普通文理类1.专本贯通分段培养项目批文史类&#xff1a…

linux中probe函数传递参数的寻找(下)

linux中probe函数传递参数的寻找&#xff08;下&#xff09; 通过追寻driver的脚步&#xff0c;我们有了努力的方向&#xff1a;只有找到spi_bus_type的填充device即可&#xff0c;下面该从device去打通&#xff0c;当两个连通之日&#xff0c;也是任督二脉打通之时。先从设备定…

服务器部署 配置jetty运行参数_Zookeeper+websocket实现对分布式服务器的实时监控...

Zookeeper简介Zookeeper是Hadoop的一个子项目&#xff0c;它是分布式系统中的协调系统。简单来说就是一个Zookeeper注册同步中心&#xff0c;内部结构为一个树形目录&#xff0c;每个节点上可以存放一定量(默认的数据量上限是1M&#xff0c;但是可以通过调整参数修改)的数据&am…

Python Interview Question and Answers

引文&#xff1a;http://ilian.i-n-i.org/python-interview-question-and-answers/ For the last few weeks I have been interviewing several people for Python/Django developers so I thought that it might be helpful to show the questions I am asking together with …

2018年海南计算机职称考试,海南省2018年全国计算机等级考试报名时间

关于延长2018年3月全国计算机等级考试报名时间的公告2018年3月全国计算机等级考试报名时间原定为2017年12月11日-26日&#xff0c;为了满足广大考生报考的需要&#xff0c;现决定将报名时间延长至2017年12月29日17&#xff1a;00。请符合报考条件的考生及时上网填报报名信息和缴…