unix中的error全域性理解

2021-04-16 06:47:45 字數 535 閱讀 3487

unix中的獲取最後錯誤原因,一般都從errno得到,而且大部分書或者資料都說是全域性的

這個全域性的真不好理解,到底會不會程序(執行緒)安全的,答案應該是肯定的,因為看了不少程式都這麼用的,否則在這些程式中早就出問題了,那不是說全域性的,怎麼會沒問題呢?

首先看下errno.h標頭檔案定義了:

#if defined(_reentrant) || defined(_ts_errno) || _posix_c_source - 0 >= 199506l

extern int *___errno();

#define errno (*(___errno()))

#else

extern int errno;

現在大概明白了,這個errno該怎麼用了!從程序來說肯定是安全,隔離的。。。赫赫

從多執行緒來說,需要指定引數,來進行巨集定義

最後在補充下shell中的$? 變數,獲取最後一條指令碼的執行結果0,成功;1,失敗

也是安全的!經過在兩個同名終端上測試,乙個程式中呼叫shell測試。。。基本可靠了。。。 

結合Unix中的緩衝理解fork

今天看到乙個有趣的程式 include include main 如果printf中沒有換行,那麼輸出是 fork i am the child process,my process id is 4286 fork i am the parent process,my process id is 4...

js中的Error物件

在js中,有乙個error物件,我們通常可以用它來設定錯誤資訊,或者設定異常捕捉。error物件的使用方法 var newerrorobj new error var newerrorobj new error number var newerrorobj new error number,desc...

Sql Server 中的 ERROR用法

error 當前乙個語句遇到錯誤,則返回錯誤號,否則返回0。需要注意的是 error在每一條語句執行後會被立刻重置,因此應該在要驗證的語句執行後檢查數值或者是將它儲存到區域性變數中以備將來使用。select from stuinfo insert into stuinfo values n 張三 n...