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

NAME

       exec - 調用子進程

` SYNOPSIS
       exec ?switches? arg ?arg ...?
_________________________________________________________________

yz DESCRIPTION
       這茤R令把它的參數作為對n執行的一茤峖h-
       茪l進程的指定來對待。參數接受標準的 shell  管道的格式(form),即每  arg
       都變成某茤R令的一茼r,並且每茪ㄕP的命令都變成一茪l進程。

       如果給            exec的初始的參數以            -           開始,則它-
       抭Q作為命令行開關而不是管道指定的一部分來對待。當前支持下列開關:

       -keepnewline 在管道的輸出中保持尾隨的換行符。通常n刪除尾隨的換行符。

       --           標誌開關(部分)的結束。此後的參數即使以-開頭仍被作為第一
                    arg 來對待。

       如果一      arg      (或成對的     arg)有像下探yz的格式茯Y一種,則exec
       用它來控制子進程間的輸入和輸出流(flow)。將不把這樣的參數傳遞給子進程。在像「<
       fileName」這樣的格式中     fileName    可以n麼是一蚖P「<」分離的參數,-
       n麼是在同一荌捊丹茖S有間隔的空格(例如 「<fileName」)。

       |              分隔在管道中不同的命令。前悸漫R令的標準輸出將被輸送給後-
                      惟R令的標準輸入中。

       |&             分隔在管道中不同的命令。前-
                      惟R令的標準輸出和標準錯誤輸出都被輸送到後-
                      悸獐郱擗J中。這種咿w向格式取代像     2>      和     >&
                      這樣的格式。

       < fileName     打開由     fileName      指名的檔案並作為在管道中的第一-
                      茤R令的標準輸入來使用。

       <@ fileId      FileId     必須是一茈普}了的檔案的標識符,比如是從以前的
                      open                    調用的返回C作為在管道中的第一-
                      茤R令的標準輸入來使用。FileId
                       必須用讀模式來打開。

       << value       Value  被傳遞給第一茤R令來作為它的標準輸入。

       > fileName     最後的命令的標準輸出被咿w向到叫                 fileName
                      的檔案中,覆誑戎H前的內容。

       2> fileName    把管道中所有命令的標準錯誤輸出咿w向到叫         fileName
                      的檔案中,覆誑戎H前的內容。

       >& fileName    最後的命令的標準輸出和所有命令的標準錯誤輸出都被-
                      咿w向到叫 fileName的檔案中,覆誑戎H前的內容。

       >> fileName    最後的命令的標準輸出被咿w向到叫                 fileName
                      的檔案中,對它進行添加而不是覆誑式C

       2>> fileName   在管道中的所有的命令的標準錯誤輸出都被咿w向到叫
                      fileName的檔案中,對它進行添加而不是覆誑式C

       >>& fileName   最後的命令的標準輸出和所有命令的標準錯誤輸出被咿w向到叫
                      fileName 的檔案中,對它進行添加而不是覆誑式C

       >@ fileId      FileId     必須是一茈普}了的檔案的標識符,比如是從以前的
                      open調用的返回C最後的命令的標準輸出被咿w向到
                      fileId(指定)的檔案中。檔案必須用讀模式來打開。

       2>@ fileId     FileId     必須是一茈普}了的檔案的標識符,比如是從以前的
                      open調用的返回C在管道中的所有命令的標準錯誤輸出都被-
                      咿w向到 fileId(指定)的檔案中。檔案必須用寫模式來打開。

       >&@ fileId     FileId     必須是一茈普}了的檔案的標識符,比如是從以前的
                      open調用的返回-
                      C最後的命令的標準輸出和所有命令的標準錯誤輸出被咿w向到
                      fileId(指定)的檔案中。檔案必須用寫模式來打開。

       如果標準輸出沒有被咿w向,則                                        exec
       命令返回在管道中最後的命令的標準輸出。如果在管道中的任何命令不正常退出或被殺死或被掛起,則
       exec             將返回一蚇欞~和並且錯誤訊息將包含管道的輸出和隨後的描-
       z不正常終止的錯誤訊息;errorCode
       變量將包括關於最近所遭遇的不正常終止的額外的信息。如果任何命令寫它的標準錯誤檔案而這-
       蚍郱欞~未被咿w向,則                  exec                  將返回一-
       蚇欞~;錯誤消息將包含管道的標準輸出,跟著是關於不正常終止的信息(如果有的話),隨後是標準錯誤輸出。

       如果結果或錯誤訊息的最後的字符是一荋咻瘝禳A則這-
       荋咻瘝鑒q常被從結果或錯誤訊息中刪除。這是與其他  Tcl  返回菑@P的,它-
       抭q常不用換行(作為)結束。但是,如果指定了
       -keepnewline則保持尾隨的換行符。

       如果標準輸入未使用     「<」      、「<<」      或      「<@」      來-
       咿w向,則把應用的當前的標準輸入作為第一茤R令的標準輸入。

       如果最後的         arg         是「&」,則管道將在I景執行。在這種情況下
       exec命令將返回一-
       茼C表,列表的元素是在管道中所有子進程的進程標識符。如果在管道中最後的命令的標準輸出未被-
       咿w向,則輸出到應用的標準輸出中,並且如果管道中所有的命令的錯誤輸出未被-
       咿w向,則錯誤輸出到應用的標準錯誤中。

       每茤R令中的第一茼r被接受為命令的名字;在它上-
       捷i行「~」(tilde)替換,如果結果不包含斜槓,則在                    PATH
       環境變量中的目錄裏查找給定名字的可執行檔案。如果名字包含斜槓,則它必須參照一-
       荓q當前目錄可到達的可執行檔案。在給命令的參數上不進行通配符      (glob)
       擴展或其他的 shell 式的替換。

nI PORTABILITY ISSUES                                                     |
       Windows                                                                 |
       (所有版本)                                                      |       |
              從/向一荇M接口讀或寫,使用「@                                    |
              fileId」記號(notation),不能工作。在從一荇M接口讀的時唌A一16位  |
              DOS                  應用程式將掛起(hang)                  而一- |
              32位應用程式將立即返回檔案結束(end-of-file)。在任意類型的應用向一-|
              荇M接口寫的時-                                                   |
              唌A如果控制台存在的話,信息轉而發送到控制台,否則就丟棄信息。    |

              Tk  控制台文本組件不提供真實的標準 IO 弁遄C在 Tk 下,從標準輸入- |
              咿w向的時唌A所有的應用將看到一茈艂Y的檔案結束;-                 |
              咿w向到標準輸出或標準錯誤輸出的信息將被丟棄。                    |

              n麼是正斜槓n麼是反斜槓被接受為給                             Tcl |
              命令的參數的路徑分隔符。在執行一蚗野峈漁-                       |
              唌A對應用的路徑名指定也可以包含正或反斜槓作為路徑分隔符。但是必須記住,多數|
              Windows                                                          |
              應用接受有正斜槓的參數作為選項分界符(delimiter)而反斜槓只在路徑中。指定了有正斜槓的一-|
              虒纁|名的給應用的任何參數將不被自動的轉換成使用反斜槓字符。如果一-|
              荌捊]括作為路徑分隔符的正斜槓,它可以被識別成路徑名,也可以不被識別成路徑名,這依賴於(具體)程式。|

              額外的,在調用一16位       DOS       或       Windows       3.X |
              應用時,所有路徑名必須使用短的、神秘的(cryptic)的路徑格式(例如,使用「applba~1.def」來替代|
              「applbakery.default」)。                                        |

              在一虒纁|中在一行的兩茤峓韟h的正或反斜槓參照一-                  |
              蚨蘢蘢纁|。例如,根目錄c:/       和一茪l目錄/windows/system的一- |
              蚋眾瑼熙s接將產生c://windows/system                         (兩- |
              荓袟b在一起),這參照的是在叫  windows   的那台機器上的叫  system |
              的掛裝點(而 c:/  被忽略),這並不等價於  c:/windows/system,它描- |
              z的是在當前電腦上的一茈媬。應使用           file           join |
              命令來連接路徑的成。                                            |

       Windows                                                                 |
       NT                                                              |       |
              在嘗試執行一蚗野峸氶Aexec   漸查找指定的那茼W字。接著按  .com、 |
              .exe,   和    .bat     的次序把它戽K加到指定的名字的後惆穫d找這- |
              茈[長了的名字。如果沒有指定一-                                   |
              茈媬名作為應用(程式)名的一部分,在嘗試定位應用(程式)時,依次在下列目錄中自動查找:|

                     裝載 Tcl 可執行檔案的目錄。                               |
                     當前目錄                                                  |
                     Windows NT 32位系統目錄。                                 |
                     Windows NT 16位系統目錄。                                 |
                     Windows NT 主目錄。                                       |
                     在 path 中列出的目錄。                                    |

              n執行       shell       內置命令像       dircopy, |
              調用者必須為想用的命令加上「cmd.exe /c 」前導 (prepend)。        |

       Windows                                                                 |
       95                                                              |       |
              在嘗試執行一蚗野峸氶Aexec漸查找指定的那茼W字。接著按     .com、 |
              .exe,    和    .bat    的次序把它戽K加到指定的名字的後惆穫d找這- |
              茈[長了的名字。如果沒有指定一-                                   |
              茈媬名作為應用(程式)名的一部分,在嘗試定位應用(程式)時,依次在下列目錄中自動查找:|

                     裝載 Tcl 可執行檔案的目錄。                               |
                     當前目錄。                                                |
                     Windows 95 系統目錄。                                     |
                     Windows 95 主目錄。                                       |
                     在 path 中列出的目錄。                                    |

              n執行       shell       內置命令像       dircopy, |
              調用者必須為想用的命令加上「command.exe /c 」前導(prepend)。     |

              一旦一            16位            DOS             應用程式從一- |
              荓惆謋x讀標準輸入接著退出,所以後來運行的        16位        DOS |
              應用程式將看到標準輸入已經被關閉了。32位應用程式沒有這-          |
              荌暋D並將正確運行,即使在一               16位              DOS |
              應用程式認為標準輸入已經被關閉之後。此時還沒有針對這-            |
              荅妘揪漱w知的工作項目(workaround)。                              |

              NUL: </B> 設備和一 16位應用程式之間的咿w向不總是工作。在從 NUL: |
              咿w向時                                                          |
              一些應用程式可能掛起,另一些將得到永無窮盡(infinite)的「0x01」字節流(stream),而有一些實際上將正確的得到立即的檔案結束;這些行為像是依賴於編譯到應用程式自-|
              中的某些東西。在到          NUL:的咿w向大於或等於4K          時, |
              一些應用將掛起(hang)。在32位應用程式中不發生上z問題。            |

              所有  DOS  16位應用程式都是同步運行的。從一蚨瑐D到一  16位  DOS |
              應用程式的所有標準輸入被搜集到一蚆{時檔案中;在這16位       DOS |
              應用程式開始執行之前,管道的其他端點(end)必須被關閉。從一16位   |
              DOS應用程式到一蚨瑐D的所有標準輸出或錯誤輸出被搜集到一-          |
              蚆{時檔案中;在臨時檔案被咿w向到管道的下一荈布q之前,這-         |
              蚗野庰{式必須終止。這源於一荌w對   Windows   95在實現管道中的一- |
              荅妘揪漱u作項目,也是標準的   Windows   95   DOS   shell    自- |
              處理管道的方式。                                                 |

              特定的應用程式,像                                   command.com |
              ,不應該交互的執行。不從標準輸入讀和向標準輸出寫,而是直接訪問控制台視窗的應用程式可能會失敗,並掛起Tcl,如果它-|
              怞菑v的私有控制台視窗不可使用甚至可能掛起系統。                  |

       Macintosh                                                               ||
              在 Macintosh 下 exec  命令未被實現而不存在。                     |

       Unix                                                                    ||
               exec  命令是全弁鄋漕羅酗W探yz的那樣工作。                       |

 SEE ALSO                                                                  |
       error(n), open(n)                                                       |

r KEYWORDS                                                                |
       execute, pipeline, redirection, subprocess                              |

[]                                                                 |
      Hhh                                                                |

[]                                                               |
       2001/07/11                                                              |

m Linux manUpn:                                          |
       http://cmpp.linuxforum.net                                              |