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

NAME

       open - 打開基於檔案或命令管道的一茬q道

` SYNOPSIS
       open fileName
       open fileName access
       open fileName access permissions
_________________________________________________________________

yz DESCRIPTION
       這茤R令打開一蚗仵蛂B串行端口、或命令管道並返回一                       |
       通道標識符用於將來被命令如  readputs、和close   調用。如果   fileName
       的第一茼r符不是「|」則命令打開一蚗仵:          fileName          給出-
       n打開的檔案的名字,並且它必須符合在 filename 手冊條目中描z的規範。

       如果存在                                                         access
       參數,則它指示以何種方式訪問檔案(或命令管道)。在第一種形式下     access
       可以是下列:

       r              為只讀而打開檔案;檔案必須已經存在。如果未指定    access
                      則這蚧是預設C

       r+             為讀寫而打開檔案;檔案必須已經存在。

       w              為只寫而打開檔案。如果檔案已經存在則截斷(truncate)它,如果檔案不存在則建立一-
                      虓s檔案。

       w+             為讀寫而打開檔案。如果檔案已經存在則截斷(truncate)它,如果檔案不存在則建立一-
                      虓s檔案。

       a              為只讀而打開檔案。如果檔案不存在,則建立一-
                      虓s的空檔案。設置初始訪問位置為檔案的結束處。

       a+             為讀寫而打開檔案。如果檔案不存在,則建立一-
                      虓s的空檔案。設置初始訪問位置為檔案的結束處。

       在第二種形式下,access  由某些下列標誌的一茼C表構成,所有這些都有標準的
       POSIX 意義。 必須有一蚍郅x是 RDONLYWRONLYRDWR 中的一荂C

       RDONLY         為只讀而打開檔案。

       WRONLY         為只寫而打開檔案。

       RDWR           為讀寫而打開檔案。

       APPEND         在每次寫之前把指針設置到檔案的結束處。

       CREAT          如果檔案不存在則建立這蚗仵(如果沒有這-
                      蚍郅x,在檔案不存在時返回一蚇欞~)。

       EXCL           如果還指定了 CREAT,如果檔案已經存在則返回一蚇欞~。

       NOCTTY         如果檔案是一茞袟摀]備,這蚍郅x防止這蚗仵蛈足偃o-
                      荈i程的控制終端。

       NONBLOCK       在打開檔案和可能的後續 I/O
                          操作期間防止過程阻塞。這-
                      蚍郅x的真實行為是依賴於系統的和依賴於設備的;不鼓勵使用它(更好是使用
                      fconfigure                                   命令來使一-
                      蚗仵袪i入非阻塞模式)。詳情參見你的系統文件中的      open
                      系統調用的 O_NONBLOCK 標誌。

       TRUNC          如果檔案存在則截斷其為零長度。

       如果作為打開過程的一部分而建立了一虓s檔案,使用    permissions     (一-
       蚞蒱)並聯合進程的檔案模式建立掩碼為新檔案設置權。Permissions    預設為
       0666。

       Note that if you are going to be reading or writing  binary  data  from |
       the  channel  created  by  this  command, you should use the fconfigure |
       command to change the -translation option  of  the  channel  to  binary |
       before  transferring any binary data.  This is in contrast to the ``b'' |
       character passed as part of the equivalent of the access  parameter  to |
       some versions of the C library fopen() function.

ROD COMMAND PIPELINES
       如果       fileName      is      的第一茼r符是「|」,則把      fileName
       的餘下的字符被作為描zn調用的一茤R令管道的參數的一茼C表來對待,與   exec
       對待參數的方式相同。在這種情況下,依賴於    access   的A使用由   open
       返回的通道標識符來向這-
       茤R令的輸入管道寫或從它的輸出管道讀。如果使用了只寫訪問(例如,   accessw),則除非被這茤R令所屏棄(override),這-
       (命令)管道的標準輸出被定向到當前的標準輸出上。如果使用了只讀訪問(例如,accessr),則除非被這茤R令所屏棄(override),這-
       (命令)管道的標準輸入接受當前的標準輸入。

       譯注
              打開用來寫的命令管道

                                  Tcl     ==>   Pipeline  ==>   command

              +--------+       +--------+      +--------+      +--------+
              | stdin  |<------+ stdin  |  +-->| pipein |   +--+ stdin  |
              +--------+       +--------+  |   +--------+   |  +--------+
              | stdout |<--+---+ stdout |  |   | pipeout|<--+  | stdout +--+
              +--------+   |   +--------+  |   +--------+      +--------+  |
                           |   | stderr |  |                   | stderr |  |
                           |   +--------+  |                   +--------+  |
                           |   | channel+--+                               |
                           |   +--------+                                  |
                           +-----------------------------------------------+

              打開一茈峔蚥牧漫R令管道

                           +-----------------------------------------------+
                           |                                               |
              +--------+   |   +--------+      +--------+      +--------+  |
              | stdin  |<--+---+ stdin  |      | pipein |<--+  | stdin  +--+
              +--------+       +--------+      +--------+   |  +--------+
              | stdout |<------+ stdout |  +-->| pipeout|   +--+ stdout |
              +--------+       +--------+  |   +--------+      +--------+
                               | stderr |  |                   | stderr |
                               +--------+  |                   +--------+
                               | channel+--+
                               +--------+
                                  Tcl     <==    Pipeline  <==  command

qH SERIAL COMMUNICATIONS
       如果     fileName     參照一茼磞皞搕f,則打開特定的串行端口並以依賴於- |
       台的方式初始化。給    fileName    用以打開一茼磞皞搕f的可接受的b移植- |
       n點中描z。                                                              |

tm CONFIGURATION OPTIONS                                                 |
       使用 fconfigure 命令來為打開的串行端口查詢和設置下列選項:               |

       -mode                                                                   |
       baud,parity,data,stop                                             |     |
              這蚇龠筋O由逗號分隔的四蚧的一荈隻X:                          這- |
              茼磞皞搕f的波特(baud)率、奇偶校驗(parity)、數據位數、和停止位。baud|
              率是指定連接速度的一蚋眾瞉蒱CParity            是下列字母之一: |
              noems;分別表示奇偶校驗選項「none」、「odd」、「even」、「mark」、或「space」。Data|
              是數據位數,應當是從    5    到    8    中的一蚞蒱A而     stop |
              是停止位的數目,應當是整數 1 或 2。                              |

       -pollinterval                                                           |
       msec                                                      |             |
              只在               Windows                   上串行端口能獲得這- |
              蚇龠窗A它被用來設置檔案事件輪詢(poll)之間的最大時間。這影響整   |
              Tcl   解釋器檢查事件中間的時間間隔(總是採用最小的)。只有在你想- |
              n使輪詢這茼磞皞搕f的時間間隔小於      10 msec (預設)時才使用這- |
              蚇龠窗C                                                          |

       -lasterror                                                              ||
              只在                 Windows                 上串行端口能獲得這- |
              蚇龠窗A並只能查詢(只在直接請求時報告)。在串行通信出錯的情況下,read|
              或  puts  返回一茪@般 Tcl 檔案 I/O     錯誤。可以調用 fconfigure |
              -lasterror     來得到錯誤詳情的一茼C表(例如,FRAME RXOVER)。

nI PORTABILITY ISSUES                                                     |
       Windows                                                                 |
       (所有版本)                                                      |       |
              給  fileName  來打開一茼磞皞搕f的有效漣峖′O comX:,這裏     X |
              是一蚍A一般是從   1   到   4。如果系統有多於四茼磞皞搕f,則這- |
              茞顫(notation)可以表示串行端口從        1   到   9。嘗試打開一- |
              茪ㄕs在或序號大於             9                  的串行端口將導- |
              P錯誤。打開串行端口的可替代的方法是使用檔名     \\.\comX,這裏 X |
              是對應於一茼磞皞搕f的任何(整)數;請注意,這茪隤k在       Windows |
              95 和 Windows 98 上相當的慢。                                    |

       Windows                                                                 |
       NT                                                              |       |
              在交互運行              Tcl                   的時唌A如果存在一- |
              荓惆謋x,則在真實的控制台和使用標準輸入或輸出的一-               |
              茤R令管道之間可能有一些奇怪的相互作用。如果為讀而打開一-         |
              茤R令管道,在這-                                                 |
              荓惆謋x鍵入的一些行將被發送到命令管道而一些行將別發送到      Tcl |
              求飽C如果為寫而打開一茤R令管道,在管道關閉之前,在這-          |
              荓惆謋x中鍵入的擊鍵(keystroke)將一直是不可見的。在執行           |
              16-bit                         或                         32-bit |
              應用程式時都可能發生這種事情。這些問題只發生在               Tcl |
              和子應用程式同時競爭這荓惆謋x的時唌C如果命令管道是從一-          |
              蚑Z本中啟動的,所以                                          Tcl |
              不訪問控制台,或者命令管道不使用標準輸出或輸出,而是-            |
              咿w向(從或)到一蚗仵蛂A那麼上z問題不發生。                        |

       Windows                                                                 |
       95                                                              |       |
              不能同時為讀寫而打開一茤R令管道來執行一        16-bit       DOS |
              應用程式,因為從一蚨瑐D接收標準輸入和向一蚨瑐D發送標準輸出的(兩- |
              )        16-bit   DOS   應用程式同步運行。不執行   16-bit   DOS |
              應用程式的命令管道異步運行並且可以同時為讀寫而打開。             |

              在交互運行              Tcl                   的時唌A如果存在一- |
              荓惆謋x,則在真實的控制台和使用標準輸入或輸出的一-               |
              茤R令管道之間可能有一些奇怪的相互作用。如果為從一        32-bit |
              應用程式讀而打開一茤R令管道,在這-                               |
              荓惆謋x鍵入的一些擊鍵將被發送到命令管道而一些擊鍵將別發送到      |
              Tcl     求飽C如果為向一     32-bit        應用程式寫而打開一- |
              茤R令管道,在管道關閉之前,在控制台中將一直沒有輸出是可見的。這些問題只發生在|
              Tcl      和子應用程式同時競爭這荓惆謋x的時唌C如果命令管道是從一- |
              蚑Z本中啟動的,所以                                          Tcl |
              不訪問控制台,或者命令管道不使用標準輸出或輸出,而是-            |
              咿w向(從或)到一蚗仵蛂A那麼上z問題不發生。                        |

              不論    Tcl     是否在交互的運行,如果為從一     16-bit     DOS |
              應用程式讀而打開一-                                              |
              茤R令管道,在從命令管道的標準輸出收到檔案結束之前,對       open |
              的調用一直不返回。如果為向一 16-bit DOS     應用程式寫而打開一- |
              茤R令管道,在管道實際上被關閉之前,沒有數據被發送到命令管道的標準輸出。像上-|
              探yz的那樣,這荌暋D發生的鴞]是     16-bit DOS 應用程式同步運行。 |

       Macintosh                                                               ||
              在 Macintosh 下目前未實現打開串行端口。                          |

              在              Macintosh                  不支持打開命令管道,- |
              鴞]是應用程式不支持標準輸入或輸出的概念。                        |

       Unix                                                                    ||
              給  fileName  來打開一茼磞皞搕f的有效漣峖′O /dev/ttyX,這裏的 |
              Xab,但是可以使用映射到一- |
              茼磞皞搕f的任何偽檔案(pseudo-file)的名字。                       |

              在交互運行               Tcl                  的時唌A如果存在一- |
              荓惆謋x,則在真實的控制台和使用標準輸入或輸出的一-               |
              茤R令管道之間可能有一些奇怪的相互作用。如果為讀而打開一-         |
              茤R令管道,在這-                                                 |
              荓惆謋x鍵入的一些行將被發送到命令管道而一些行將別發送到      Tcl |
              求飽C這些問題只發生在     Tcl          和子應用程式同時競爭這- |
              荓惆謋x的時唌C如果命令管道是從一蚑Z本中啟動的,所以          Tcl |
              不訪問控制台,或者命令管道不使用標準輸出或輸出,而是-            |
              咿w向(從或)到一蚗仵蛂A那麼上z問題不發生。                        |

       關於在不同孕x上執行應用程式請參見            exec           命令- |
       nSEE ALSO                                                                  |
       file(n),  close(n),  filename(n),  fconfigure(n),   gets(n),   read(n), |
       puts(n), exec(n), fopen(1)                                              |

r KEYWORDS                                                                |
       access  mode,  append,  create,  file, non-blocking, open, permissions, |
       pipeline, process, serial                                               |

[]                                                                 |
      Hhh                                                                |

[]                                                               |
       2001/10/16                                                              |

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