亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? unix

?? Unix編程常見問題解答
??
?? 第 1 頁 / 共 5 頁
字號:
                              Unit)的時間,包括:用戶時<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              間,系統(tǒng)時間,用戶各子進(jìn)程合計時間,系統(tǒng)各子進(jìn)程合計時間)<BR><BR>&nbsp;&nbsp; 
                              * 資源使用(resource 
                              utilizations)設(shè)定為0<BR><BR>&nbsp;&nbsp; * 
                              阻塞信號集初始化為空集(譯者注:原文此處不明確,譯文根據(jù)fork函數(shù)手冊頁<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              稍做修改)<BR><BR>&nbsp;&nbsp; * 
                              不繼承由timer_create函數(shù)創(chuàng)建的計時器<BR><BR>&nbsp;&nbsp; * 
                              不繼承異步輸入和輸出<BR><BR>1.1.2 fork函數(shù) 與 
                              vfork函數(shù)的區(qū)別在哪里里?<BR>-------------------------------------------<BR><BR>有些系統(tǒng)有一個系統(tǒng)調(diào)用‘vfork()’,它最初被設(shè)計成‘fork()’的較少額外支出<BR>(lower-overhead)版本。因為‘fork()’包括拷貝整個進(jìn)程的地址空間,所以非常<BR>“昂貴”,這個‘vfork()’函數(shù)因此被引入。(在3.0BSD中)(譯者注:BSD:<BR>Berkeley 
                              Software 
                              Distribution)<BR><BR>*但是*,自從‘vfork()’被引入,‘fork()’的實現(xiàn)方法得到了很大改善,最值得<BR>注意的是“寫操作時拷貝”(copy-on-write)的引入,它是通過允許父子進(jìn)程可訪問<BR>相同物理內(nèi)存從而偽裝(fake)了對進(jìn)程地址空間的真實拷貝,直到有進(jìn)程改變內(nèi)<BR>存中數(shù)據(jù)時才拷貝。這個提高很大程度上抹殺了需要‘vfork()’的理由;事實上,<BR>一大部份系統(tǒng)完全喪失了‘vfork()’的原始功能。但為了兼容,它們?nèi)匀惶峁?lt;BR>‘vfork()’函數(shù)調(diào)用,但它只是簡單地調(diào)用‘fork()’,而不試圖模擬所有‘vfork()’<BR>的語義(semantics, 
                              譯文取自&lt;&lt;高級編程&gt;&gt;,指定義的內(nèi)容和做法)。<BR><BR>結(jié)論是,試圖使用任何‘fork()’和‘vfork()’的不同點是*很*不明智的。事實上,<BR>可能使用‘vfork()’根本就是不明智的,除非你確切知道你想*干什么*。<BR><BR>兩者的基本區(qū)別在于當(dāng)使用‘vfork()’創(chuàng)建新進(jìn)程時,父進(jìn)程將被暫時阻塞,而<BR>子進(jìn)程則可以借用父進(jìn)程的地址空間。這個奇特狀態(tài)將持續(xù)直到子進(jìn)程要么退<BR>出,要么調(diào)用‘execve()’,至此父進(jìn)程才繼續(xù)執(zhí)行。<BR><BR>這意味著一個由‘vfork()’創(chuàng)建的子進(jìn)程必須小心以免出乎意料地改變父進(jìn)程的<BR>變量。特別的,子進(jìn)程必須不從包含‘vfork()’調(diào)用的函數(shù)返回,而且必須不調(diào)<BR>用‘exit()’(如果它需要退出,它需要使用‘_exit()’;事實上,對于使用正常<BR>‘fork()’創(chuàng)建的子進(jìn)程這也是正確的)(譯者注:參見1.1.3)<BR><BR>1.1.3 
                              為何在一個fork的子進(jìn)程分支中使用_exit函數(shù)而不使用exit函數(shù)?<BR>-----------------------------------------------------------------<BR><BR>‘exit()’與‘_exit()’有不少區(qū)別在使用‘fork()’,特別是‘vfork()’時變得很<BR>突出。<BR><BR>‘exit()’與‘_exit()’的基本區(qū)別在于前一個調(diào)用實施與調(diào)用庫里用戶狀態(tài)結(jié)構(gòu)<BR>(user-mode 
                              constructs)有關(guān)的清除工作(clean-up),而且調(diào)用用戶自定義的清除程序<BR>(譯者注:自定義清除程序由atexit函數(shù)定義,可定義多次,并以倒序執(zhí)行),相對<BR>應(yīng),后一個函數(shù)只為進(jìn)程實施內(nèi)核清除工作。<BR><BR>在由‘fork()’創(chuàng)建的子進(jìn)程分支里,正常情況下使用‘exit()’是不正確的,這是<BR>因為使用它會導(dǎo)致標(biāo)準(zhǔn)輸入輸出(譯者注:stdio: 
                              Standard Input 
                              Output)的緩沖區(qū)被<BR>清空兩次,而且臨時文件被出乎意料的刪除(譯者注:臨時文件由tmpfile函數(shù)創(chuàng)建<BR>在系統(tǒng)臨時目錄下,文件名由系統(tǒng)隨機(jī)生成)。在C++程序中情況會更糟,因為靜<BR>態(tài)目標(biāo)(static 
                              objects)的析構(gòu)函數(shù)(destructors)可以被錯誤地執(zhí)行。(還有一些特殊情<BR>況,比如守護(hù)程序,它們的*父進(jìn)程*需要調(diào)用‘_exit()’而不是子進(jìn)程;適用于絕<BR>大多數(shù)情況的基本規(guī)則是,‘exit()’在每一次進(jìn)入‘main’函數(shù)后只調(diào)用一次。)<BR><BR>在由‘vfork()’創(chuàng)建的子進(jìn)程分支里,‘exit()’的使用將更加危險,因為它將影響<BR>*父*進(jìn)程的狀態(tài)。<BR><BR>1.2 
                              環(huán)境變量<BR>============<BR><BR>1.2.1&nbsp;&nbsp;如何從程序中獲得/設(shè)置環(huán)境變量?<BR>--------------------------------------<BR>獲得一個環(huán)境變量可以通過調(diào)用‘getenv()’函數(shù)完成。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              #include 
                              &lt;stdlib.h&gt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              char *getenv(const char 
                              *name);<BR><BR>設(shè)置一個環(huán)境變量可以通過調(diào)用‘putenv()’函數(shù)完成。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              #include 
                              &lt;stdlib.h&gt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              int putenv(char 
                              *string);<BR><BR>變量string應(yīng)該遵守"name=value"的格式。已經(jīng)傳遞給putenv函數(shù)的字符串*不*能夠被<BR>釋放或變成無效,因為一個指向它的指針將由‘putenv()’保存。這意味著它必須是<BR>在靜態(tài)數(shù)據(jù)區(qū)中或是從堆(heap)分配的。如果這個環(huán)境變量被另一個‘putenv()’的<BR>調(diào)用重新定義或刪除,上述字符串可以被釋放。<BR><BR>/* 
                              譯者增加:<BR><BR>因為putenv()有這樣的局限,在使用中經(jīng)常會導(dǎo)致一些錯<BR>誤,GNU 
                              libc 中還包括了兩個BSD風(fēng)格的函數(shù):<BR>#include 
                              &lt;stdlib.h&gt;<BR>int setenv(const char *name, 
                              const char *value, int replace);<BR>void 
                              unsetenv(const char 
                              *name);<BR><BR>setenv()/unsetenv()函數(shù)可以完成所有putenv()能做的事。setenv() 
                              可以不受指針<BR>限制地向環(huán)境變量中添加新值,但傳入?yún)?shù)不能為空(NULL)。當(dāng)replace為0時,如<BR>果環(huán)境變量中已經(jīng)有了name項,函數(shù)什么也不做(保留原項),否則原項被覆蓋。<BR>unsetenv()是用來把name項從環(huán)境變量中刪除。注意:這兩個函數(shù)只存在在BSD和GNU<BR>庫中,其他如SunOS系統(tǒng)中不包括它們,因此將會帶來一些兼容問題。我們可以用<BR>getenv()/putenv()來實現(xiàn):<BR><BR>int 
                              setenv(const char *name,&nbsp;&nbsp;const char 
                              *value, int replace)<BR>{<BR>&nbsp;&nbsp; char 
                              *envstr;<BR><BR>&nbsp;&nbsp; if (name == NULL || 
                              value == 
                              NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
                              1;<BR>&nbsp;&nbsp; if (getenv(name) 
                              !=NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;envstr 
                              = (char *) malloc(strlen(name) + strlen(value) + 
                              2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf 
                              (envstr, "%s=%s", name, 
                              value);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 
                              (putenv(envstr));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp; return 
                              0;<BR>}<BR>*/<BR><BR>記住環(huán)境變量是被繼承的;每一個進(jìn)程有一個不同的環(huán)境變量表拷貝(譯者注:<BR>從core文件中我們可以看出這一點)。結(jié)果是,你不能從一個其他進(jìn)程改變當(dāng)前<BR>進(jìn)程的環(huán)境變量,比如shell進(jìn)程。<BR><BR>假設(shè)你想得到環(huán)境變量‘TERM’的值,你需要使用下面的程序:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              char *envvar;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              envvar=getenv("TERM");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("The value for the environment variable 
                              TERM is ");<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(envvar)<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("%s\n",envvar);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              else<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("not set.\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR><BR>現(xiàn)在假設(shè)你想創(chuàng)建一個新的環(huán)境變量,變量名為‘MYVAR’,值為‘MYVAL’。<BR>以下是你將怎樣做:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              static char 
                              envbuf[256];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              sprintf(envbuf,"MYVAR=%s","MYVAL");<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(putenv(envbuf))<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("Sorry, putenv() couldn't find the memory 
                              for 
                              %s\n",envbuf);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* Might exit() or something here if you can't 
                              live without it */<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR><BR>1.2.2 
                              我怎樣讀取整個環(huán)境變量表?<BR>--------------------------------<BR><BR>如果你不知道確切你想要的環(huán)境變量的名字,那么‘getenv()’函數(shù)不是很有用。<BR>在這種情況下,你必須更深入了解環(huán)境變量表的存儲方式。<BR><BR>全局變量,‘char 
                              **envrion’,包含指向環(huán)境字符串指針數(shù)組的指針,每一個字<BR>符串的形式為‘“NAME=value”’(譯者注:和putenv()中的“string”的格式相同)。<BR>這個數(shù)組以一個‘空’(NULL)指針標(biāo)記結(jié)束。這里是一個打印當(dāng)前環(huán)境變量列表<BR>的小程序(類似‘printenv’)。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              #include 
                              &lt;stdio.h&gt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              extern char 
                              **environ;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; int 
                              main()<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              char **ep = 
                              environ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              char 
                              *p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              while ((p = 
                              *ep++))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("%s\n", 
                              p);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR><BR>一般情況下,‘envrion’變量作為可選的第三個參數(shù)傳遞給‘main()’;就是說,<BR>上面的程序可以寫成:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              #include 
                              &lt;stdio.h&gt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              int main(int argc, char **argv, char 
                              **envp)<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              char 
                              *p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              while ((p = 
                              *envp++))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("%s\n", 
                              p);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR><BR>雖然這種方法被廣泛的操縱系統(tǒng)所支持(譯者注:包括DOS),這種方法事實上并<BR>沒有被POSIX(譯者注:POSIX: 
                              Portable Operating System 
                              Interace)標(biāo)準(zhǔn)所定義。(一<BR>般的,它也比較沒用)<BR><BR>1.3 
                              我怎樣睡眠小于一秒?<BR>========================<BR><BR>在所有Unix中都有的‘sleep()’函數(shù)只允許以秒計算的時間間隔。如果你想要更<BR>細(xì)化,那么你需要尋找替換方法:<BR><BR>&nbsp;&nbsp; 
                              * 許多系統(tǒng)有一個‘usleep()’函數(shù)<BR><BR>&nbsp;&nbsp; * 
                              你可以使用‘select()’或‘poll()’,并設(shè)置成無文件描述符并試驗;一個普<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              遍技巧是基于其中一個函數(shù)寫一個‘usleep()’函數(shù)。(參見comp.unix.questions<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              FAQ 的一些例子)<BR><BR>&nbsp;&nbsp; * 
                              如果你的系統(tǒng)有itimers(很多是有的)(譯者注:setitimer和getitimer是兩個操作<BR>&nbsp;&nbsp;&nbsp;&nbsp; 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产精品免费观看视频| 欧洲国产伦久久久久久久| 亚洲欧洲在线观看av| 欧美美女网站色| 波多野结衣中文字幕一区二区三区| 性做久久久久久久免费看| 国产亚洲人成网站| 欧美一级xxx| 91福利区一区二区三区| 国产xxx精品视频大全| 日本亚洲电影天堂| 亚洲精品免费电影| 中文字幕第一区| 精品剧情在线观看| 欧美精品在欧美一区二区少妇| 成人午夜av在线| 狂野欧美性猛交blacked| 亚洲一区二区三区视频在线| ㊣最新国产の精品bt伙计久久| 久久欧美一区二区| 91精品国产综合久久久久久漫画| 日本精品一级二级| 99国产欧美另类久久久精品 | 国产亚洲人成网站| 欧美精三区欧美精三区| 91色porny在线视频| 成人精品小蝌蚪| 丰满放荡岳乱妇91ww| 激情五月激情综合网| 青青草伊人久久| 日本aⅴ精品一区二区三区| 亚洲成人午夜电影| 午夜a成v人精品| 日韩精品一卡二卡三卡四卡无卡| 一区二区国产视频| 亚洲一区二区在线视频| 一区二区三区中文字幕电影| 亚洲人精品一区| 亚洲免费毛片网站| 亚洲乱码精品一二三四区日韩在线 | 亚洲福利国产精品| 亚洲影视资源网| 亚洲一区二区三区免费视频| 亚洲一区二区三区四区中文字幕| 一区二区在线观看av| 亚洲综合图片区| 亚洲电影在线播放| 天堂一区二区在线免费观看| 日日欢夜夜爽一区| 蜜桃久久久久久久| 国产精品亚洲午夜一区二区三区| 国产成a人亚洲| a4yy欧美一区二区三区| 91黄色免费网站| 51精品久久久久久久蜜臀| 精品毛片乱码1区2区3区| 久久女同精品一区二区| 中文字幕免费不卡| 一区二区三区欧美在线观看| 视频一区二区欧美| 韩国v欧美v亚洲v日本v| 成人性色生活片免费看爆迷你毛片| 成人av影院在线| 在线免费视频一区二区| 日韩欧美亚洲一区二区| 国产日韩av一区二区| 中文字幕在线观看一区二区| 亚洲成人在线网站| 精品一区二区三区在线观看国产| 成人午夜看片网址| 欧美三级蜜桃2在线观看| 欧美videos中文字幕| 国产精品久久福利| 日欧美一区二区| 成人夜色视频网站在线观看| 在线精品国精品国产尤物884a| 日韩一区二区三区高清免费看看| 久久久久久日产精品| 亚洲日本在线看| 美女视频免费一区| 色综合婷婷久久| 欧美成人福利视频| 亚洲免费视频成人| 国产一区二区三区精品视频| 在线视频中文字幕一区二区| 精品国产一区二区亚洲人成毛片| 国产精品黄色在线观看| 蜜臀av在线播放一区二区三区| 成人黄色电影在线| 日韩精品在线一区二区| 一区二区三区中文字幕在线观看| 久久精品国产精品亚洲精品| 色婷婷精品大视频在线蜜桃视频 | 亚洲欧洲日产国码二区| 日本色综合中文字幕| 波多野结衣在线一区| 亚洲色图在线播放| 美脚の诱脚舐め脚责91| 日本电影亚洲天堂一区| 欧美激情一区二区| 奇米在线7777在线精品 | 欧美亚洲精品一区| 国产精品拍天天在线| 精品制服美女久久| 欧美色图免费看| 亚洲桃色在线一区| 国产精品一二三区在线| 日韩免费在线观看| 五月天视频一区| 一本到一区二区三区| 国产欧美精品日韩区二区麻豆天美| 五月天网站亚洲| 欧美又粗又大又爽| ●精品国产综合乱码久久久久| 国产在线不卡一卡二卡三卡四卡| 欧美人妇做爰xxxⅹ性高电影| 亚洲天堂免费在线观看视频| 国产成人精品免费| 亚洲精品一区二区三区蜜桃下载| 天堂成人免费av电影一区| 色婷婷激情一区二区三区| 自拍偷拍国产亚洲| av午夜一区麻豆| 国产精品日韩成人| 成人免费毛片片v| 国产精品蜜臀在线观看| 成人性视频免费网站| 亚洲国产精品高清| 国产成人一级电影| 亚洲国产激情av| 成人永久aaa| 国产精品久久久久久久久搜平片 | 国产91露脸合集magnet| 久久综合色一综合色88| 免费观看日韩av| 欧美一二三四在线| 日本怡春院一区二区| 亚洲国产另类精品专区| 色综合久久久久综合体桃花网| 国产精品久久久久四虎| 成人丝袜高跟foot| 综合色天天鬼久久鬼色| 成+人+亚洲+综合天堂| 国产精品久久久久三级| 色综合一区二区| 婷婷六月综合网| 在线电影国产精品| 裸体健美xxxx欧美裸体表演| 日韩精品在线网站| 成人永久看片免费视频天堂| 国产精品天干天干在线综合| 91蜜桃网址入口| 亚洲成av人片一区二区梦乃| 欧美一区二区在线免费观看| 久久99国产精品久久99果冻传媒| www久久精品| 99久久久免费精品国产一区二区| 亚洲乱码精品一二三四区日韩在线 | 一区二区三区av电影| 欧美精品日韩精品| 极品美女销魂一区二区三区免费| 久久久久久久久久久久久久久99| 成人av网站免费| 亚洲高清在线精品| 精品国产凹凸成av人导航| 福利视频网站一区二区三区| 亚洲欧美日韩国产成人精品影院| 精品视频全国免费看| 久久超碰97中文字幕| 国产精品久99| 制服丝袜亚洲网站| 成人一道本在线| 日本韩国欧美一区| 免费在线观看一区| 亚洲国产精品黑人久久久| 欧美日韩你懂的| 国产精品99久久久久| 亚洲自拍偷拍欧美| 久久亚洲精精品中文字幕早川悠里| 一本大道久久a久久精品综合| 视频一区二区三区中文字幕| 国产日韩欧美综合在线| 欧美色图激情小说| 国产a视频精品免费观看| 五月婷婷欧美视频| 日韩毛片视频在线看| 日韩视频免费观看高清完整版 | 91成人国产精品| 国产一区二区精品在线观看| 亚洲一区二区五区| 国产亲近乱来精品视频| 在线电影一区二区三区| 99久久免费视频.com| 免费成人你懂的| 亚洲永久精品国产| 国产精品毛片大码女人 | 一区二区三区欧美日韩| 久久久久国产精品厨房| 欧美精品亚洲一区二区在线播放| av在线这里只有精品|