【圖文】Android_傳智播客(完整篇)_第1頁(yè)
【圖文】Android_傳智播客(完整篇)_第2頁(yè)
【圖文】Android_傳智播客(完整篇)_第3頁(yè)
【圖文】Android_傳智播客(完整篇)_第4頁(yè)
【圖文】Android_傳智播客(完整篇)_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 - 反 過(guò) 來(lái), 對(duì) 于 前 面 提 到 的netscape 程 序, 也 可 以 通 過(guò) 編 寫(xiě) 一 個(gè)script 文 件supernet 實(shí) 現(xiàn)運(yùn) 行:netscape &rm /.netscape/lock- 注1: 還 有 一 種 方 法, 只 適 用 于 普 通 用 戶(hù): 在creat 創(chuàng) 建 一 個(gè) 新 文 件 時(shí), 即 使 權(quán) 限 實(shí)ment 不 允 許 寫(xiě), 該 文 件 也 被 打 開(kāi) 用 作 寫(xiě)。 但creat 在 截 斷 一 個(gè) 現(xiàn) 存 文 件 時(shí), 若 無(wú) 寫(xiě) 權(quán)限n, 則 失 敗。 這 樣 就 可 以 只 通 過(guò)creat 系 統(tǒng) 調(diào) 用 實(shí) 現(xiàn) 文 件 信

2、 號(hào) 燈 機(jī) 制。 但 這 種做 法 有 一點(diǎn), 就 是 不 適 用 于 超 級(jí) 用 戶(hù), 因 為 對(duì) 于 超 級(jí) 用 戶(hù) 沒(méi) 有 不 允 許 寫(xiě) 的 東 西。- 注2: 這 不 適 于 帶& 符 號(hào) 的 后 臺(tái) 進(jìn) 程。- UNIX 系 統(tǒng) 的 文 件 信 號(hào) 燈 機(jī) 制- 作 為 一 個(gè) 多 用 戶(hù)、 多 任 務(wù) 的 操 作 系 統(tǒng),UNIX 允 許 某 個(gè) 程 序 同 時(shí) 運(yùn) 行 多 個(gè) 進(jìn) 程。 但 統(tǒng) 資 源 等 因 素 的 制 約, 要 求 一 次 只 能 有 一 個(gè) 進(jìn) 程 在 運(yùn) 行。 例 如 在Digital UNIX 下 運(yùn)行 第程 時(shí), 系 統(tǒng) 報(bào) 告 如 下 錯(cuò)

3、 誤 信 息:- Netscape has detected a /.netscape/lock file.- This may indicate that another user is running Netscape using your /.netscape files.- 實(shí) 際 上, 第 一 個(gè)Netscape 進(jìn) 程 在 運(yùn) 行 時(shí), 加 了 一 把 鎖, 禁 止 其 他Netscape 進(jìn) 程 啟 動(dòng)。 當(dāng)鎖 打 開(kāi), 其 他 進(jìn) 程 才 能 進(jìn) 入。 這 就 是UNIX 的 信 號(hào) 燈 機(jī) 制。- 而Netscape 是 用 文 件 作 為 信 號(hào) 燈 的。 在 運(yùn) 行 前,

4、 先 檢 查 文 件/.netscape/lock 是 否 存 在:鎖 已 掛 上, 新 進(jìn) 程 不 能 運(yùn) 行, 只 好 等 待; 若 沒(méi) 有, 說(shuō) 明 鎖 已 打 開(kāi), 可 以 運(yùn) 行 了。- 在 掌 握 了 文 件 信 號(hào) 燈 的 機(jī) 理 后, 可 以 自 行 設(shè) 計(jì) 一 套 萬(wàn) 能 加 鎖 解 鎖 程 序, 為 每 個(gè)的 鎖 和 鑰 匙。 并 且 使 用 零 字 節(jié) 長(zhǎng) 度 的 文 件 當(dāng) 鎖, 減 少 系 統(tǒng) 開(kāi) 銷(xiāo)。- 我 們 用creat 和unlink 兩 個(gè) 系 統(tǒng) 調(diào) 用 實(shí) 現(xiàn) 加 解 鎖 和 檢 測(cè) 操 作。 一 個(gè) 進(jìn) 程 運(yùn) 行 之 前, 先鎖 文 件 是 否 存

5、在 注1。unlink 系 統(tǒng) 調(diào) 用 從 一 個(gè) 目 錄 中 刪 去 一 個(gè) 文 件 鏈, 若 成 功 則 返 回0,存 在; 若 失 敗, 表 明 文 件 不 存 在, 返 回-1。 如 果 還 沒(méi) 有 上 鎖, 就 要 用creat 系 統(tǒng) 調(diào) 用 創(chuàng)建已 掛 上, 雖 然 進(jìn) 程 并 未 運(yùn) 行, 但 unlink 無(wú) 疑 會(huì) 刪 除 鎖 文 件, 所 以 也 要 用creat 來(lái) 恢 復(fù)。cr 建 一 個(gè) 新 文 件, 函 數(shù) 標(biāo) 題 如 下:int creat(path, perms /* create file */char *path; /* path name */int p

6、erms; /* permission bits */- 其 中path 表 示 路 徑 加 文 件 名,perms 是10 位 的 文 件 權(quán) 限 描 述 字, 在 加 鎖 程 序 中 取0。 文時(shí), 初 始 長(zhǎng) 度 為 零 字 節(jié), 用 它 來(lái) 做 鎖 文 件, 可 以 最 大 限 度 地 降 低 系 統(tǒng) 開(kāi) 銷(xiāo)。- 鎖 文 件 規(guī) 定 為: 源 文 件 名+“.lok”。 這 樣 一 來(lái), 就 真 正 做 到 了 一 個(gè) 程 序 配 一 把 鎖。- 下 面 就 列 出 加 鎖 和 解 鎖 的 程 序 清 單。 我 們 用 同 樣 的 程 序 完 成 這 兩 種 完 全 互 斥 的于 命

7、令 名 的 不 同。 在C 語(yǔ) 言 源 程 序 里, 變 量argv0 表 示 命 令 名,“l(fā)ockf” 是 上 鎖,“unlockf- 程 序LOCKF.C 暨UNLOCKF.C 的 源 代 碼#include < stdio.h >#include < errno.h >#include < fcntl.h >#include < cdatyp.h >void syserr(msg /*打印系統(tǒng)調(diào)用錯(cuò)誤信息并中止 */char *msg;extern int errno, sys_nerr;extern char *sys_errlist;

8、fprintf(stderr, "ERROR: %s (%d", msg, errno;if (errno >0 && errno< sys_nerrfprintf(stderr, " %sn", sys_errlisterrno;elsefprintf(stderr, "n"exit(1;short nlock(name /*上鎖過(guò)程 */char *name; char *path, *lockpath(;int fd, tries;extern int errno;short unlink_resul

9、t;path=lockpath(name; /*制鎖 */unlink_result=unlink(path; /*判斷是否已經(jīng)上鎖 */fd=creat(path, 0; /*上鎖 */if (fd=-1 | close(fd=-1syserr("nlock"if (unlink_result=-1return 0xff;return (0;void nunlock(name /*解鎖 */char *name; char *lockpath(;if (unlink(lockpath(name=-1syserr("nunlock"static char

10、 *lockpath(name /*制鎖的過(guò)程 */char *name; static char path20;char *strcat(;strcpy(path, name;return(strcat(path, ".lok"int main(argc, argvint argc;char *argv; if (argc!=2 printf("Usage: %s filenamenr", argv0;return(1;if (strcmp(argv0, "lockf"=0if (!nlock(argv1 printf("

11、You can not add the same lock twice!rn"return(2;if (strcmp(argv0, "unlockf"=0nunlock(argv1;return(0;本程序的用法是:lockf 源文件名或unlockf 源文件名- 要 真 正 實(shí) 現(xiàn) 信 號(hào) 燈 機(jī) 制, 我 們 還 必 須 準(zhǔn) 備 一 個(gè) 簡(jiǎn) 單 的script 文 件signal: if lockf $1 echo “Error: Another $1 is running.” fi- 這 樣 我 們 在 運(yùn) 行 文 本 編 輯 器dtpad 時(shí), 輸 入 下

12、 列 命 令:- signal dtpad- 反 過(guò) 來(lái), 對(duì) 于 前 面 提 到 的netscape 程 序, 也 可 以 通 過(guò) 編 寫(xiě) 一 個(gè)script 文 件supernet 實(shí) 現(xiàn)運(yùn) 行:netscape &rm /.netscape/lock- 注1: 還 有 一 種 方 法, 只 適 用 于 普 通 用 戶(hù): 在creat 創(chuàng) 建 一 個(gè) 新 文 件 時(shí), 即 使 權(quán) 限 實(shí)ment 不 允 許 寫(xiě), 該 文 件 也 被 打 開(kāi) 用 作 寫(xiě)。 但creat 在 截 斷 一 個(gè) 現(xiàn) 存 文 件 時(shí), 若 無(wú) 寫(xiě) 權(quán)限n, 則 失 敗。 這 樣 就 可 以 只 通 過(guò)cre

13、at 系 統(tǒng) 調(diào) 用 實(shí) 現(xiàn) 文 件 信 號(hào) 燈 機(jī) 制。 但 這 種做 法 有 一點(diǎn), 就 是 不 適 用 于 超 級(jí) 用 戶(hù), 因 為 對(duì) 于 超 級(jí) 用 戶(hù) 沒(méi) 有 不 允 許 寫(xiě) 的 東 西。- 注2: 這 不 適 于 帶& 符 號(hào) 的 后 臺(tái) 進(jìn) 程。- UNIX 系 統(tǒng) 的 文 件 信 號(hào) 燈 機(jī) 制- 作 為 一 個(gè) 多 用 戶(hù)、 多 任 務(wù) 的 操 作 系 統(tǒng),UNIX 允 許 某 個(gè) 程 序 同 時(shí) 運(yùn) 行 多 個(gè) 進(jìn) 程。 但統(tǒng) 資 源 等 因 素 的 制 約, 要 求 一 次 只 能 有 一 個(gè) 進(jìn) 程 在 運(yùn) 行。 例 如 在Digital UNIX 下 運(yùn)行

14、第程 時(shí), 系 統(tǒng) 報(bào) 告 如 下 錯(cuò) 誤 信 息:- Netscape has detected a /.netscape/lock file.- This may indicate that another user is running Netscape using your /.netscape files.- 實(shí) 際 上, 第 一 個(gè)Netscape 進(jìn) 程 在 運(yùn) 行 時(shí), 加 了 一 把 鎖, 禁 止 其 他Netscape 進(jìn) 程 啟 動(dòng)。 當(dāng)鎖 打 開(kāi), 其 他 進(jìn) 程 才 能 進(jìn) 入。 這 就 是UNIX 的 信 號(hào) 燈 機(jī) 制。- 而Netscape 是 用 文 件 作

15、為 信 號(hào) 燈 的。 在 運(yùn) 行 前, 先 檢 查 文 件/.netscape/lock 是 否 存 在:鎖 已 掛 上, 新 進(jìn) 程 不 能 運(yùn) 行, 只 好 等 待; 若 沒(méi) 有, 說(shuō) 明 鎖 已 打 開(kāi), 可 以 運(yùn) 行 了。- 在 掌 握 了 文 件 信 號(hào) 燈 的 機(jī) 理 后, 可 以 自 行 設(shè) 計(jì) 一 套 萬(wàn) 能 加 鎖 解 鎖 程 序, 為 每 個(gè)的 鎖 和 鑰 匙。 并 且 使 用 零 字 節(jié) 長(zhǎng) 度 的 文 件 當(dāng) 鎖, 減 少 系 統(tǒng) 開(kāi) 銷(xiāo)。- 我 們 用creat 和unlink 兩 個(gè) 系 統(tǒng) 調(diào) 用 實(shí) 現(xiàn) 加 解 鎖 和 檢 測(cè) 操 作。 一 個(gè) 進(jìn) 程 運(yùn) 行

16、 之 前, 先鎖 文 件 是 否 存 在 注1。unlink 系 統(tǒng) 調(diào) 用 從 一 個(gè) 目 錄 中 刪 去 一 個(gè) 文 件 鏈, 若 成 功 則 返 回0,存 在; 若 失 敗, 表 明 文 件 不 存 在, 返 回-1。 如 果 還 沒(méi) 有 上 鎖, 就 要 用creat 系 統(tǒng) 調(diào) 用 創(chuàng)建已 掛 上, 雖 然 進(jìn) 程 并 未 運(yùn) 行, 但 unlink 無(wú) 疑 會(huì) 刪 除 鎖 文 件, 所 以 也 要 用creat 來(lái) 恢 復(fù)。cr 建 一 個(gè) 新 文 件, 函 數(shù) 標(biāo) 題 如 下:int creat(path, perms /* create file */char *path; /

17、* path name */int perms; /* permission bits */- 其 中path 表 示 路 徑 加 文 件 名,perms 是10 位 的 文 件 權(quán) 限 描 述 字, 在 加 鎖 程 序 中 取0。 文時(shí), 初 始 長(zhǎng) 度 為 零 字 節(jié), 用 它 來(lái) 做 鎖 文 件, 可 以 最 大 限 度 地 降 低 系 統(tǒng) 開(kāi) 銷(xiāo)。- 鎖 文 件 規(guī) 定 為: 源 文 件 名+“.lok”。 這 樣 一 來(lái), 就 真 正 做 到 了 一 個(gè) 程 序 配 一 把 鎖。- 下 面 就 列 出 加 鎖 和 解 鎖 的 程 序 清 單。 我 們 用 同 樣 的 程 序 完 成 這 兩 種 完 全 互 斥 的于 命 令 名 的 不 同。 在C 語(yǔ) 言 源 程 序 里, 變 量argv0 表 示 命 令 名,“l(fā)ockf” 是 上 鎖,“unlockf- 程 序LOCKF.C 暨UNLOCKF.C 的 源 代 碼#include < stdio.h >#include < errno.h >#include < fcntl.h >#include < cdatyp.h >void syserr(msg /*打印系統(tǒng)調(diào)用錯(cuò)誤信息并中止 */char *m

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論