day_03_出錯處理和環境變量

一、出錯處理和環境變量

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章