您的位置:首页 > 其它

day_03_出错处理和环境变量

2017-07-12 19:01 190 查看
一出错处理和环境变量
1C语言的出错处理
1 自己设计的func函数如何来返回错误信息

2 标准C库函数或者系统函数中如何给调用者返回错误对于错误处理提 供了一个全局变量和3个函数来解决显示错误原因的功能

2环境变量和环境表程序的执行环境
1 系统中提供的操作环境变量的API
getenv - 根据name获得value

putenv - 以name value 的形式设置环境变量若name不存在就添加新的环境变量若存在就覆盖

setenv - 设置环境变量是否覆盖取决与第三个参数

unsetenv - 删除环境变量

clearenv - 清空环境变量environ NULL

一、出错处理和环境变量

1、C语言的出错处理

1.1 自己设计的func函数如何来返回错误信息

  1)返回值 返回为int类型 该值不会为负数
返回-1代表出错

  2)返回值 原来打算返回为int类型,并且可正可负
修改设计,增加一个传出参数,带回操作结果;通过返回0代表运算 成功,返回-1代表运算失败。

* 除法运算的函数

int div(int a, int b)
{
return a/b;
}
int div(int a, int b, int *result)
{
if(b)
{
*result = a/b;
return 0;
}
return -1;
}


  3)返回值 返回为指针(NULL代表失败)

  4)该函数不会执行失败,设置函数返回类型为void

1.2 标准C库函数或者系统函数中如何给调用者返回错误,对于错误处理提 供了一个全局变量和3个函数来解决显示错误原因的功能。

  
<errno.h>
:用于存储错误的编号

  三个函数:
 strerror - - - - - - - - - - - -把错误编号转化为对应的错误提示字符串;

 perror - - - - - - - - - - - - - 打印错误编码对应的字符串信息;(重点)

 printf(“%m”) - - - - - 打印当前错误信息;

2、环境变量和环境表(程序的执行环境)

问题1:
sudo a.out 读写方式打开/etc/passwd能成功 a.out 执行失败, 为什么?

答案:
当a.out执行时,系统会传递环境变量表给a.out,其中有一个环境变 量执行a.out是谁。

问题2:
如何编程获取环境变量?

答案:
当a.out开始在内存执行时,系统会传递参数

全局变量:char **environ;

查看环境变量的方法:shell中使用env命令,显示当前用户的环境变量信息。

2.1 系统中提供的操作环境变量的API

环境变量 = value

getenv() - 根据name获得value

#include <stdlib.h>
char *getenv(const char *name);


putenv() - 以name = value 的形式设置环境变量,若name不存在就添加新的环境变量,若存在就覆盖;

#include <stdlib.h>
int putenv(char *string);


setenv() - 设置环境变量,是否覆盖取决与第三个参数;

#include <stdlib.h>
int setenv(const char *name, const char *value, int overwrite);


unsetenv() - 删除环境变量;

#include <stdlib.h>
int unsetenv(const char *name);


clearenv() - 清空环境变量;environ = NULL

#include <stdlib.h>
int clearenv(void);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息