日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unix高级环境编程-基础知识

發布時間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unix高级环境编程-基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  對于一個從C#轉向Linux/unix系統開發的菜鳥,中間無數次的焦頭爛額只有自己心理明白,所幸我沒有在大風大浪中凋零破碎,依然堅挺著我的學習之路。

  Unix操作系統結構:

  UNIX ,是一個強大的多用戶、多任務操作系統,支持多種處理器架構,按照操作系統的分類,屬于分時操作系統,最早由KenThompson、DennisRitchie和DouglasMcIlroy于1969年在AT&T的貝爾實驗室開發。

?? 嚴格意義上講,可將操作系統定義為一種軟件,可以直接控制硬件資源,提供程序運行環境,我們可以稱之為內核。內核的接口可以稱為系統調用,公用函數庫建立在系統調用之上,應用軟件既可以使用公用函數庫也可以使用系統調用。shell是一種特殊的應用程序,它為運行其他應用程序提供接口。

?? 廣義上講,操作系統也包括內核和其他的一些軟件。

 文件系統和目錄

 文件系統:

?? Unix文件系統是目錄和文件組成的一種層次結構,目錄的起點稱為根(root) 使用./符號表示,目錄(directory)是一個包含許多目錄項的文件,邏輯上講,可以認為i每一個目錄都包含一個文件名,同時還包括文件的屬性信息。文件的屬性是指文件類型,文件大小,文件所有者,文件權限 以及文件最后修改時間。

 文件名:目錄中各個名字稱為文件名,斜線和空操作符不能出現在文件名中,在創建新的目錄時候,系統會自動創建2個文件名 .和..

 路徑名:一個或多個以斜線分割的文件名序列構成路徑名,以斜線開頭的稱為絕對路徑,否則稱為相對路徑

18 #include <dirent.h>19 int main(int argc,char** argv)20 { 21 DIR *dp;22 struct dirent *dirp;23 if(argc != 2)24 {25 err_quit("usage:is directory_name");26 }27 if(dp = opendir(argv[1] == NULL)28 err_sys("can`t open %s ",argv[1]);29 while((dirp = readdir(dp))!= NULL)30 printf("%s\n",dirp->d_namlen);31 32 closedir(dp);33 exit(0);34 }

?

工作目錄:

? Unix下每一個進程都有一個工作目錄,或者可以稱為當前工作目錄,所有的相對路徑都是從工作目錄開始的。


輸入和輸出

??? 標準輸入,標準輸出和標準出錯,所有的shell都會為每一個新運行的進程打開三個文件描述,大多數shell都提供一種方式,使其中任何一個或者三個,例如:ls -> file.list 執行命令后,標準輸出重新定向到file.list中

不用緩存的IO  

  函數open,read,write,lseek以及close提供不用緩存的I/O,這些都使用文件描述

?

#define BUFFSIZE 409622 23 int main(void)24 { 25 int n;26 char buf[BUFFSIZE];27 while(n = read(STDOUT_FILENO,buf,BUFFSIZE) >0)28 { 29 if(write(STDIN_FILENO,buf,n) != n)30 { 31 err_sys("write err\n");32 }33 if(n < 0)34 { 35 err_sys("read_err\n");36 }37 exit(0);

?標準I/O

?? 標準I/O函數體on個一種對不用緩沖的額函數的帶緩沖的接口,使用標準I/O函數可以無需擔心如何選取最佳的緩沖區大小,使用標準I/O函數的另外一個優點是簡化了對輸入行的處理,如Fgets函數讀取完整的一行,而read函數讀取指定的字節,標準I/O函數庫提供了使我們能夠控制該庫所使用的緩沖風格函數。

??

18 #include <stdio.h>19 int main(void)20 { 21 int c;22 while(c =getc(stdin) != EOF)23 { 24 if(putc(c,stdout) == EOF)25 err_sys("output error");26 if(ferror(stdin))27 err_sys("input error");28 eixt(0);29 } 30 }

?函數getc一次讀取一個字符,然后函數putc將此字符標準輸出

?

?

轉載于:https://www.cnblogs.com/gaowenbin/archive/2012/04/26/2471516.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的unix高级环境编程-基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。