UNIX系统编程(一)
看了《Linux程序設計》100來頁,不得不吐槽一下翻譯,實在沒辦法,在豆瓣上找到這本書《Unix/Linux編程實踐教程》,翻了那么幾十頁,就愛上了這本書了。
下面是一些概念性的東東:
1.計算機用操作系統來管理所有的資源,并將不同的設備和不同的程序連接起來。
2.內存空間用來存放程序和數據,所有的程序都必須在內存空間中才能運行,用來容納操作系統的內存空間叫系統空間,容納應用程序的叫做用戶空間。
3.內核(亦即OS),向程序提供服務以便程序能訪問到設備。
4.系統資源
- 處理器
- I/O
- 進程管理(process management):指程序的一次運行,每個進程都有自己的資源,如內存,打開的文件和其他運行時所需的系統資源。
- memory
- device
- timers
- interprocess communication
- networking
5.在登錄過程中,當用戶名和密碼通過驗證后,系統會啟動一個叫shell的進程,然后把用戶交給這個進程,由這個進程處理用戶的請求。
??????????????????????????????????????????????????????????????????????
6.網絡橋牌展示了UNIX系統的編程中3個重要的方面:
- 通信:某個用戶或進程如何與其他用戶和進程交換信息?
- 協作:在同一個時刻,網絡橋牌的兩個用戶不會去拿同一張牌,程序如何來協調多個process來使他們沒沖突地訪問共享資源?
- 網絡訪問:計算機的程序如何使用網絡?
????????????????????
7.命令也是程序
在UNIX上面添加新的命令很容易。把程序的可執行文件放到以下任意一個目錄即可:/bin、/usr/bin、/usr/local/bin,這些目錄存在很多系統命令,UNIX一開始沒那么多命令,一些人編寫特定的程序來解決某個特定問題。而其他人也覺得這程序有用,用得多了后,就成了標準命令了。
8.從UNIX中學習UNIX:
- 閱讀聯機幫助(如:$man who)
- 搜索聯機幫助(如:$man –k utmp)
- 閱讀.h文件
- 從參閱部分得到啟示(SEE ALSO)
9.系統調用之OPEN、READ
1)open:在進程process和文件file之間建立一條連接,這個連接被稱為文件描述符file descriptor,就像條由進程通向內核的管道。(大方框下面的陰影是kernel,最下面的陰影圓柱是硬盤)
???? 文件描述符:如果文件被順利打開,內核會返回一個正整數的值,此即文件描述符。打開文件會建立文件和進程之間的連接,文件描述符就是唯一標識這個連接的,若同時打開好幾個文件,他們所對應的文件描述符是不同,如果將一個文件打開多次,對應的文件描述符也不同。
??????????????????????????????????????????????
| ????????????????????????????????????????????????? system??? call:?????????? open |
| 目標??????????????????????????????? 打開一個文件 頭文件??????????????????????????? #include<fcntl.h> 函數原型??????????????????????? int fd = open (char *name, int how) |
| 參數??????????????????????????????? name:文件名????????????????????????? how :O_RDONLY,O_WRONLY或O_RDWR |
| 返回值??????????????????????????? -1 錯誤??????????????????????????????????? int 成功返回 |
?
2)read
????? 在unistd.h頭文件中,原型為:ssize_t numread = read (int fd, void *buf, size_t qty)。其中fd為文件描述符,buf為用來存放數據的目的緩沖區,qty為要讀的字節數。
返回:-1,錯誤;numread,成功讀取。
轉載于:https://www.cnblogs.com/frechei/archive/2013/04/11/3015675.html
總結
以上是生活随笔為你收集整理的UNIX系统编程(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法导论练习 10.4-5及12.1-3
- 下一篇: java信息管理系统总结_java实现科