?? unix
字號:
How do I compare strings using filename patterns?
我怎樣使用文件名通配模式比較字符串?<BR> 5.1.2
How do I compare strings using regular
expressions? 我怎樣使用正則表達(dá)式比較字符串?<BR> 5.2
What's the best way to send mail from a program?
什么是在程序中發(fā)送電子郵件的最好方法?<BR> 5.2.1
The simple method: /bin/mail
簡單方法:/bin/mail<BR> 5.2.2
Invoking the MTA directly: /usr/lib/sendmail
直接啟動郵件傳輸代理(譯者注:MTA: mail transfer
agent):/usr/bin/sendmail<BR> 5.2.2.1
Supplying the envelope explicitly
顯式提供收件人信息<BR> 5.2.2.2
Allowing sendmail to deduce the recipients
允許sendmail程序根據(jù)郵件內(nèi)容分析出收件人<BR><BR>6. Use of tools
工具的使用<BR> 6.1 How can I debug the
children after a fork?
我怎樣調(diào)試fork函數(shù)產(chǎn)生的子進(jìn)程?<BR> 6.2 How to build
library from other libraries?
怎樣通過其他庫文件建立新的庫文件?<BR> 6.3 How to create
shared libraries / dlls?
怎樣創(chuàng)建動態(tài)連接庫/dlls?<BR> 6.4 Can I replace
objects in a shared library?
我能更改一個動態(tài)連接庫里的目標(biāo)嗎?<BR> 6.5 How can I
generate a stack dump from within a running
program? 我能在一個運(yùn)行著的程序中生成堆棧映象嗎?<BR><BR><BR>1.
進(jìn)程控制<BR>***********<BR><BR>1.1
創(chuàng)建新進(jìn)程:fork函數(shù)<BR>========================<BR><BR>1.1.1
fork函數(shù)干什么?<BR>----------------------<BR><BR>
#include
<sys/types.h><BR>
#include
<unistd.h><BR><BR>
pid_t
fork(void);<BR><BR>‘fork()’函數(shù)用于從已存在進(jìn)程中創(chuàng)建一個新進(jìn)程。新進(jìn)程稱為子進(jìn)程,而原進(jìn)程稱為<BR>父進(jìn)程。你可以通過檢查‘fork()’函數(shù)的返回值知道哪個是父進(jìn)程,哪個是子進(jìn)程。父<BR>進(jìn)程得到的返回值是子進(jìn)程的進(jìn)程號,而子進(jìn)程則返回0。以下這個范例程序說明它的基本<BR>功能:<BR><BR>
pid_t pid;<BR><BR> switch
(pid = fork())<BR>
{<BR> case
-1:<BR>
/* 這里pid為-1,fork函數(shù)失敗
*/<BR>
/* 一些可能的原因是
*/<BR>
/* 進(jìn)程數(shù)或虛擬內(nèi)存用盡
*/<BR>
perror("The fork
failed!");<BR>
break;<BR><BR> case
0:<BR>
/* pid為0,子進(jìn)程
*/<BR>
/* 這里,我們是孩子,要做什么?
*/<BR>
/* ...
*/<BR>
/* 但是做完后, 我們需要做類似下面:
*/<BR>
_exit(0);<BR><BR>
default:<BR>
/* pid大于0,為父進(jìn)程得到的子進(jìn)程號
*/<BR>
printf("Child's pid is
%d\n",pid);<BR>
}<BR><BR>當(dāng)然,有人可以用‘if() ... else
...’語句取代‘switch()’語句,但是上面的形式是<BR>一個有用的慣用方法。<BR><BR>知道子進(jìn)程自父進(jìn)程繼承什么或未繼承什么將有助于我們。下面這個名單會因為<BR>不同Unix的實現(xiàn)而發(fā)生變化,所以或許準(zhǔn)確性有了水份。請注意子進(jìn)程得到的是<BR>這些東西的
*拷貝*,不是它們本身。<BR><BR>由子進(jìn)程自父進(jìn)程繼承到:<BR><BR>
* 進(jìn)程的資格(真實(real)/有效(effective)/已保存(saved)
用戶號(UIDs)和組號(GIDs))<BR><BR> *
環(huán)境(environment)<BR><BR> *
堆棧<BR><BR> * 內(nèi)存<BR><BR> *
打開文件的描述符(注意對應(yīng)的文件的位置由父子進(jìn)程共享,這會引起含糊情況)<BR><BR>
* 執(zhí)行時關(guān)閉(close-on-exec) 標(biāo)志
(譯者注:close-on-exec標(biāo)志可通過fnctl()對文件描<BR>
述符設(shè)置,POSIX.1要求所有目錄流都必須在exec函數(shù)調(diào)用時關(guān)閉。更詳細(xì)說明,<BR>
參見<<UNIX環(huán)境高級編程>> W. R. Stevens, 1993,
尤晉元等譯(以下簡稱<<高級編<BR>
程>>), 3.13節(jié)和8.9節(jié))<BR><BR> *
信號(signal)控制設(shè)定<BR><BR> * nice值
(譯者注:nice值由nice函數(shù)設(shè)定,該值表示進(jìn)程的優(yōu)先級,數(shù)值越小,優(yōu)<BR>
先級越高)<BR><BR> * 進(jìn)程調(diào)度類別(scheduler
class)
(譯者注:進(jìn)程調(diào)度類別指進(jìn)程在系統(tǒng)中被調(diào)度時所<BR>
屬的類別,不同類別有不同優(yōu)先級,根據(jù)進(jìn)程調(diào)度類別和nice值,進(jìn)程調(diào)度程序可計<BR>
算出每個進(jìn)程的全局優(yōu)先級(Global process
prority),優(yōu)先級高的進(jìn)程優(yōu)先執(zhí)行)<BR><BR> *
進(jìn)程組號<BR><BR> * 對話期ID(Session ID)
(譯者注:譯文取自<<高級編程>>,指:進(jìn)程所屬的對話期<BR>
(session)ID, 一個對話期包括一個或多個進(jìn)程組,
更詳細(xì)說明參見<<高級編程>><BR>
9.5節(jié))<BR><BR> *
當(dāng)前工作目錄<BR><BR> * 根目錄
(譯者注:根目錄不一定是“/”,它可由chroot函數(shù)改變)<BR><BR>
* 文件方式創(chuàng)建屏蔽字(file mode creation mask (umask))
(譯者注:譯文取自<<高級編<BR>
程>>,指:創(chuàng)建新文件的缺省屏蔽字)<BR><BR> *
資源限制<BR><BR> *
控制終端<BR><BR>子進(jìn)程所獨有:<BR><BR> *
進(jìn)程號<BR><BR> *
不同的父進(jìn)程號(譯者注:即子進(jìn)程的父進(jìn)程號與父進(jìn)程的父進(jìn)程號不同,父進(jìn)<BR>
程號可由getppid函數(shù)得到)<BR><BR> *
自己的文件描述符和目錄流的拷貝(譯者注:目錄流由opendir函數(shù)創(chuàng)建,因其為<BR>
順序讀取,顧稱“目錄流”)<BR><BR> *
子進(jìn)程不繼承父進(jìn)程的進(jìn)程,正文(text),數(shù)據(jù)和其它鎖定內(nèi)存(memory
locks)<BR>
(譯者注:鎖定內(nèi)存指被鎖定的虛擬內(nèi)存頁,鎖定后,不允許內(nèi)核將其在必要時<BR>
換出(page out),詳細(xì)說明參見<<The GNU C Library
Reference Manual>>
2.2版,<BR> 1999,
3.4.2節(jié))<BR><BR> *
在tms結(jié)構(gòu)中的系統(tǒng)時間(譯者注:tms結(jié)構(gòu)可由times函數(shù)獲得,它保存四個數(shù)據(jù)<BR>
用于記錄進(jìn)程使用中央處理器(CPU:Central Processing
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -