Unix_Linux操作系统-笔记Day2(错误处理)

Day2

错误处理

  1. 通过函数返回值表示错误

    返回值合法表示成功,非法表示失败

    返回有效指针表示成功,空指针(NULL/0xffffffff)表示失败

    0成功,-1失败

    永远成功printf

练习1:str_len求字符串的长度,若指针为空则报错

练习2:str_cpy(char* dest,size_t dlen,char* src)字符串拷贝函数,考虑目标的溢出问题如果目标无效或超出则报错

练习3:intmin求两个整数的最小值,二者相等,则报错

练习4:intavg求两个整数的平均值,该函数永远成功
homework

  1. 通过errno表示错误

    <errno.h>

    errno是一个全局变量,随时可能发生变化,可以将它转换成有意义的字符串
    printf("%s\n",strerror(errno))

    perror("msg")

    注意,在函数执行成功的情况下,不会修改errno的值
    因此不能以errno的值不等于0就判断函数执行出错了
    所以通常会和函数的返回值配合判断是否出错,通过errno查询出了什么类型的错误.

    void exit_msg(char* msg){
        perror(msg);
        exit(-1);
    }
    

环境变量

以字符串形式存在的,绝大多数记录了一些路径,它表示了当前操作系统的资源配置,环境设置等相关信息

  1. 环境变量表

    每个程序运行时,操作系统都会把所有环境变量记录到一张表中,传给程序

    • 通过main函数的参数获取
    int main(int arg,char* argv[],char* environ[]){
        for(int i=0;environ[i];i++){
            printf("%d %s\n",i,environ[i]);
        }
    }
    
    • 通过声明为全局变量获取
      extern char **environ;
  2. 环境变量函数

    char *getenv(const char *name);

    根据环境变量名,获取环境变量的值

    int putenv(char *string);

    以name=value形式设置环境变量,如果环境变量存在则更新,不存在则添加

    返回0成功,-1失败

    int setenv(const char *name, const char *value, int overwrite);

    设置name环境变量的值为value,如果name存在且overwrrite不为零则更新,否则不变

    int unsetenv(const char *name);

    从环境变量表中删除name

    int clearenv(void);

    清空环境变量表

    • 系统提供的环境变量的数据记录在一块特殊的存储空间,而在程序中自己添加的环境变量需要自己准备存储空间

    • 每个程序只能得到该表的副本,修改操作只对自己有效

练习5:从文件中读取一个程序的配置信息

ServerIP = 192.168.0.1

Port = 8899

MaxSize = 100

ContinueSec = 3

LogPath = /…

DataPath = /…

练习6:给LIBRARY_PATH添加一个路径(/home/zhizhen/lib)
homework

``int unsetenv(const char *name);``

从环境变量表中删除name

``int clearenv(void);``

清空环境变量表
  • 系统提供的环境变量的数据记录在一块特殊的存储空间,而在程序中自己添加的环境变量需要自己准备存储空间

  • 每个程序只能得到该表的副本,修改操作只对自己有效

练习5:从文件中读取一个程序的配置信息

ServerIP = 192.168.0.1

Port = 8899

MaxSize = 100

ContinueSec = 3

LogPath = /…

DataPath = /…

练习6:给LIBRARY_PATH添加一个路径(/home/zhizhen/lib)
homework

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值