unix體系結構:
核心的介面稱為系統呼叫,公用函式庫構建在系統呼叫介面之上,應用軟體既可以呼叫公用函式庫,也可以呼叫系統呼叫。shell是一種特殊的應用程式,它為執行其他應用程式提供了乙個介面。
列出乙個目錄中所有的檔案
#include "apue.h"#include
intmain(int argc, char *argv)
1.輸入和輸出2.標準輸入,輸出和出錯(略)檔案描述符通常是乙個小的非負整數,核心用它標識乙個特定程序正在訪問的檔案。當核心開啟乙個已有檔案和新檔案時,它返回乙個檔案描述符。在讀寫檔案時,就可以使用它。
3.不用緩衝的io:函式open,read,write,lseek以及close提供了不用緩衝的io。這些函式都使用檔案描述符
eg:將標準輸入複製到標準輸出
#include "apue.h"
#define buffsize 4096
intmain(void)
說明:stdin_fileno,stdout_fileno在unistd.h中,eg:將標準輸入複製到標準輸出2可以複製任意普通的檔案。
int main(void)
說明: stdout, stdin ,eof在標頭檔案 stdio.h中
程式和程序:
1.程式:程式是存放在磁碟上,處於目錄中的乙個可執行檔案。使用 6個exec函式中的乙個由核心將程式讀入儲存器,並執行。
2.程序.(略)
3.程序控制:
三個程序控制主要函式:fork,exec 和 waitpid。
eg:從標準輸入讀入命令並執行。
#include "apue.h"#include
intmain(void)
else if (pid == 0)
/* parent */4.執行緒和執行緒id(略)if ((pid = waitpid(pid, &status, 0)) < 0)
err_sys("waitpid error");
printf("%% ");
}exit(0);
}
5.出錯處理:
當unix函式出錯時,常常返回乙個負值,而且整型變數errno通常被設定為含有附加資訊的乙個值。
對於errno應當知道兩條規則:第一條規則:如果沒有出錯,則其值不會被乙個例程清除。因此,僅當函式的返回值指明出錯時,才檢驗其值。 第二條是:任一函式都不會將errno值設定為0,在中定義的所有常量都不為0.
c標準定義了兩個函式,它們幫助列印出錯資訊
#include
char * strerror(int errnum); 返回值:指向訊息字串的指標
perror函式基於errno的當前值,在標準出錯上產生一條出錯資訊,然後返回
#include
void perror(const char * msg)
它首先輸出由msg指向的字串,然後是乙個冒號,乙個空格,緊接著是對應於errno值的出錯的資訊,最後是乙個換行符。
eg:#include "apue.h"
#include
int main(int argc, char *argv)
6.使用者識別符號
#include "apue.h"
int main(void)
7.訊號
當向乙個程序傳送訊號時,我們必須是該程序的所有者超級使用者
8 時間值
長期以來,linux有兩種不同的時間值
當度量乙個程序的執行時間,unix系統使用三個程序時間值:時鐘時間 使用者cpu時間 系統cpu時間
9.系統呼叫和庫函式區別和聯絡(略)
重學UNP 第一章UNIX基礎知識
我們可以將作業系統定義為一種軟體,它控制計算機的硬體資源,提供程式的執行環境,通常將這種軟體叫做核心 核心的介面被稱為系統呼叫 作業系統包括核心和一些其他軟體 系統實用程式,應用程式,shell,及公共函式庫等 檔案描述符 通常是乙個小的非負整數,核心用以標識乙個程序正在訪問的檔案。標準輸入,標準輸...
APUE筆記 第一章 UNIX基礎知識
檔案描述符是乙個小的非負整數,核心用以標識乙個待定程序正在存訪的檔案。當核心開啟乙個現存盤案或建立乙個新檔案時,它就返回乙個檔案描述符。當讀 寫檔案時,就可以使用它。函式open read write lseek以及close提供了不用快取的i o。這些函式都用檔案描述符進行工作。標準i o函式提供...
UNIX基礎知識 《APUE》第一章筆記
核心 可將作業系統定義為一種軟體,它控制計算機硬體資源,提供程式執行環境。一般而言,我們稱這種軟體為核心 kernel 它相對較小,位於環境的中心。unix系統呼叫 核心,系統呼叫 shell,庫函式 應用軟體 最下層是核心,最上層是應用軟體 shell shell是一種特殊的應用程式,它為執行其他...