2011 06 28 編譯資訊儲存和檔案重定向

2021-05-26 08:37:36 字數 905 閱讀 5471

0 標準輸入

1 標準輸出

2 標準錯誤輸出

&等同引自:

$ ls my.file no.such.file 1>file.both 2>file.both

從 file system 的角度來說,單一檔案在單一時間內,只能被單一的 fd 作寫入。

假如 stdout(1) 與 stderr(2) 都同時在寫入 file.both 的話,

則要看它們在寫入時否碰到同時競爭的情形了,基本上是"先搶先贏"的原則。

讓我們用周星馳式的"慢鏡頭"來看一下 stdout 與 stderr 同時寫入 file.out 的情形好了:

* 第 1, 2, 3 秒為 stdout 寫入

* 第 3, 4, 5 秒為 stderr 寫入

那麼,這時候 stderr 的第 3 秒所寫的資料就丟失掉了﹗

要是我們能控制 stderr 必須等 stdout 寫完再寫,或倒過來,stdout 等 stderr 寫完再寫,那問題就能解決。

但從技術上,較難掌控的,尤其是 fd 在作"長期性"的寫入時...

那,如何解決呢?所謂山不轉路轉、路不轉人轉嘛,

我們可以換乙個思維:將 stderr 導進 stdout 或將 stdout 導進 sterr ,而不是大家在搶同一份檔案,不就行了﹗

bingo﹗就是這樣啦:

* 2>&1 就是將 stderr 並進 stdout 作輸出

* 1>&2 或 >&2 就是將 stdout 並進 stderr 作輸出

於是,前面的錯誤操作可以改為:

$ ls my.file no.such.file 1>file.both 2>&1

或$ ls my.file no.such.file 2>file.both >&2

這樣,不就皆大歡喜了嗎? 呵~~~ ^_^

資訊的表示和儲存

練習文字資訊在計算機中的表示 無符號數和有符號數 數的定點表示和浮點表示 定點運算和浮點四則運算 binary二進位制 dec十進位制 oct八進位制 hex十六進製制 非十進位制轉換為十進位制 把非進製數首先寫成加權係數展開式,然後按十進位制加法規則求和。這種做法稱為 按權相加 法。十進位制轉換為...

2 1資訊儲存

每台計算機都有乙個字長,指明指標資料的標稱大小。32位機器字長為32位,64位機器字長為64位。資料型別 32位機器位元組數 64位機器位元組數 char11 short22 int4 4long48 char 48 float44 double88 大端法 最高有效位元組在最前面。小端法 最低有效...

刪除KEIL編譯資訊

我個人而言,在學習stm32的過程中,利用keil5mdk每次編譯完乙個程式,檔案裡就會生成好多的編譯資訊檔案 本來光核心的 通常只有2m左右,編譯完通常會膨脹到20m 而且學習之後,隨著學習進度,一般是不會再重新學習之前的程式的 僅我個人而言,因為已經學過了,除非很不紮實,不然實在沒必要再去學一次...