Provided by: manpages-zh_1.5.2-1_all bug

NAME

       execl, execlp, execle, execv, execvp - 執行某個檔案

總覽 (SYNOPSIS)
       #include <unistd.h>

       extern char **environ;

       int execl( const char *path, const char *arg, ...);
       int execlp( const char *file, const char *arg, ...);
       int  execle(  const  char  *path,  const  char *arg , ..., char * const
       envp[]);
       int execv( const char *path, char *const argv[]);
       int execvp( const char *file, char *const argv[]);

描述 (DESCRIPTION)
       exec 系列 函數 用 新的 進程 映像 置換  當前的  進程  映像.   本  手冊頁
       描述的  這些  函數 實際上 是 對 execve(2) 函數 的 前端(front-end) 包裝.
       (關於 當前進程 的 置換 詳見 execve 的 手冊頁.)

       這些 函數 的 第一個 參數 是 待執行 程式 的 路徑名(檔名).

       在 函數 execl, execlp, 和 execle 中, const char *arg 以及  省略號  代表
       的  參數 可被 視為 arg0, arg1, ..., argn.  他們 合起來 描述了 指向 null
       結尾的 字符串 的 指針 列表, 即 執行程式 的 參數列表. 作為 約定,  第一個
       arg 參數 應該 指向 執行程式名 自身. 參數列表 NULL 指針 結束!

       execvexecvp  函數  提供  指向 null 結尾的 字符串 的 指針數組 作為
       新程式 的 參數列表.  作為 約定,  指針數組  中  第一個  元素  應該  指向
       執行程式名 自身. 指針數組 NULL 指針 結束!

       execle  函數 同時 說明了 執行進程 的 環境(environment), 他 在 NULL 指針
       後面 要求 一個 附加參數, NULL 指針 用於  結束  參數列表,  或者說,  argv
       數組.  這個 附加參數 是 指向 null 結尾的 字符串 的 指針數組, 他 NULL 指針 結束! 其他 函數 從  當前進程  的  environ  外部變量  中  獲取
       新進程 的 環境.

       某些 函數 有 特殊的 語義.

       如果 提供的 檔名 中 不包含 斜槓符(/), 函數 execlpexecvp 將 同 shell
       一樣 搜索 執行檔案. 搜索路徑  由  環境變量  PATH  指定.  如果  該  變量
       不存在,  則  使用  預設路徑  ``:/bin:/usr/bin''.   另外,  某些  錯誤 要
       特殊處理.

       如果 對 某個 檔案 的 訪問 遭到 拒絕 ( execve 返回 EACCES), 這些 函數 將
       在  搜索路徑  中  繼續 尋找. 如果 沒有 找到 符合的 檔案, 他們 返回時 把
       errno 置為 EACCES.

       如果 無法 識別 檔案首部 ( execve 返回 ENOEXEC), 這些 函數  將  以  檔名
       作為  第一個  參數  調用 shell.  (如果 這個 嘗試 失敗 就 不再 進行 搜索
       了.)

返回值 (RETURN VALUE)
       任何 exec 函數 返回 均 表明 發生了 錯誤. 返回值 是 -1,  全局變量  errno
       指出 錯誤類型.

檔案 (FILE)
       /bin/sh

錯誤 (ERROR)
       這些  函數  均可能  失敗,  errno  被  置為 庫函數 execve(2) 設置的 各種
       錯誤類型.

另見 (SEE ALSO)
       sh(1), execve(2), fork(2), environ(5), ptrace(2)

相容性 (COMPATIBILITY)
       在 某些 其他系統 中, 預設路徑 (當 環境變量  PATH  不存在)  把  當前目錄
       列在  /bin/usr/bin  後面, 這是 為了 防止 特洛伊木馬. Linux 在這兒
       採取了 傳統的 "當前目錄優先" 預設路徑.

       當 試圖 執行 程式 並且 發生 錯誤 的 時候, execlpexecvp 的  行為  是
       歷史  習慣,  但是  沒有  進入  正式文件, 也沒有 被 POSIX 標準 說明. BSD
       (可能 還有 其他 系統) 中 進程 自動 進入 睡眠, 如果 發生  ETXTBSY,  他們
       就 重試. 而 Linux 視此為 嚴重錯誤, 並且 立即 返回.

       傳統的  做法中, 函數 execlpexecvp 忽略 所有 錯誤, 除了 上述的 錯誤,
       ENOMEME2BIG.  如果 發生  這三類  錯誤,  他們  就  返回.  而  現在的
       做法是, 不僅僅 上述的 錯誤, 任何 錯誤 均導致 函數 返回.

遵循 (CONFORMING TO)
       execl,   execv,   execle,  execlpexecvp  遵循  IEEE  Std1003.1-88
       (``POSIX.1'').

[中文版維護人]
       徐明 <xuming@users.sourceforge.net>

[中文版最新更新]
       2003/05/13

《中國Linux論壇man手冊頁翻譯計劃》
       http://cmpp.linuxforum.net