______________________________________________________________________________
NAME
open - 打 開 基 於 文 件 或 命 令 管 道 的 一 個 通 道
總 覽 SYNOPSIS
open
fileName
open fileName access
open fileName access permissions
_________________________________________________________________
描 述 DESCRIPTION
這 個 命 令 打 開 一 個 文 件 、 串 行 端 口 、 或 命 令 管 道 並 返 回 一 個 通 道 標 識 符 用 於 將 來 │ 被 命 令 如 read、 puts、 和 close 調 用 。 如 果 fileName 的 第 一 個 字 符 不 是 “|”則 命 令 打 開 一 個 文 件 : fileName 給 出 要 打 開 的 文 件 的 名 字 , 並 且 它 必 須 符 合 在 filename 手 冊 條 目 中 描 述 的 規 範 。 如 果 存 在 access 參 數 , 則 它 指 示 以 何 種 方 式 訪 問 文 件 (或 命 令 管 道 )。 在 第 一 種 形 式 下 access 可 以 是 下 列 值 :
r 爲 只 讀 而 打 開 文 件 ; 文 件 必 須 已 經 存 在 。 如 果 未 指 定 access |
則 這 個 值 是 缺 省 值 。
r+ 爲 讀 寫 而 打 開 文 件 ; 文 件 必 須 已 經 存 在 。 |
|||
w 爲 只 寫 而 打 開 文 件 。 如 果 文 件 已 經 存 在 則 截 斷 |
(truncate)它 , 如 |
果 文 件 不 存 在 則 建 立 一 個 新 文 件 。
w+ 爲 讀 寫 而 打 開 文 件 。 如 果 文 件 已 經 存 在 則 截 斷 |
(truncate)它 , 如 |
果 文 件 不 存 在 則 建 立 一 個 新 文 件 。
a 爲 只 讀 而 打 開 文 件 。 如 果 文 件 不 存 在 , 則 建 立 一 個 新 的 空 文 件 。 設 置 初 始 訪 問 位 置 爲 文 件 的 結 束 處 。 | |
a+ 爲 讀 寫 而 打 開 文 件 。 如 果 文 件 不 存 在 , 則 建 立 一 個 新 的 空 文 件 。 設 置 初 始 訪 問 位 置 爲 文 件 的 結 束 處 。 在 第 二 種 形 式 下 , |
access 由 某 些 下 列 標 誌 的 一 個 列 表 構 成 , 所 有 這 些 都 有 標 準 的 POSIX 意 義 。 必 須 有 一 個 標 誌 是 RDONLY、 WRONLY 或 RDWR 中 的 一 個 。
RDONLY 爲 只 讀 而 打 開 文 件 。 |
||
WRONLY 爲 只 寫 而 打 開 文 件 。 |
||
RDWR 爲 讀 寫 而 打 開 文 件 。 |
||
APPEND 在 每 次 寫 之 前 把 指 針 設 置 到 文 件 的 結 束 處 。 |
||
CREAT 如 果 文 件 不 存 在 則 建 立 這 個 文 件 |
(如 果 沒 有 這 個 標 誌 , 在 文 件 不 存 在 時 返 回 一 個 錯 誤 )。
EXCL 如 果 還 指 定 了 |
CREAT, 如 果 文 件 已 經 存 在 則 返 回 一 個 錯 誤 。 | |
NOCTTY 如 果 文 件 是 一 個 |
終 端 設 備 , 這 個 標 誌 防 止 這 個 文 件 成 爲 這 個 進 程 的 控 制 終 端 。
NONBLOCK 在 打 開 文 件 和 可 能 的 後 續 |
I/O |
操 作 期 間 防 止 過 程 阻 塞 。 這 個 標 誌 的 真 實 行 爲 是 依 賴 於 系 統 的 和 依 賴 於 設 備 的 ; 不 鼓 勵 使 用 它 (更 好 是 使 用 fconfigure 命 令 來 使 一 個 文 件 進 入 非 阻 塞 模 式 )。 詳 情 參 見 你 的 系 統 文 檔 中 的 open 系 統 調 用 的 O_NONBLOCK 標 誌 。
TRUNC 如 果 文 件 存 在 則 截 斷 其 爲 零 長 度 。 如 果 作 爲 打 開 過 程 的 一 部 分 而 建 立 了 一 個 新 文 件 , 使 用 |
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.
命 令 管 道 COMMAND PIPELINES
如 果 fileName is 的 第 一 個 字 符 是 “|”, 則 把 fileName 的 餘 下 的 字 符 被 作 爲 描 述 要 調 用 的 一 個 命 令 管 道 的 參 數 的 一 個 列 表 來 對 待 , 與 exec 對 待 參 數 的 方 式 相 同 。 在 這 種 情 況 下 , 依 賴 於 access 的 值 , 使 用 由 open 返 回 的 通 道 標 識 符 來 向 這 個 命 令 的 輸 入 管 道 寫 或 從 它 的 輸 出 管 道 讀 。 如 果 使 用 了 只 寫 訪 問 (例 如 , access 是 w), 則 除 非 被 這 個 命 令 所 屏 棄 (override), 這 個 (命 令 )管 道 的 標 準 輸 出 被 定 向 到 當 前 的 標 準 輸 出 上 。 如 果 使 用 了 只 讀 訪 問 (例 如 , access 是 r), 則 除 非 被 這 個 命 令 所 屏 棄 (override), 這 個 (命 令 )管 道 的 標 準 輸 入 接 受 當 前 的 標 準 輸 入 。 譯 註 打 開 用 來 寫 的 命 令 管 道
Tcl ==> Pipeline ==> command
+--------+
+--------+ +--------+ +--------+
| stdin |<------+ stdin | +-->| pipein | +--+ stdin |
+--------+ +--------+ | +--------+ | +--------+
| stdout |<--+---+ stdout | | | pipeout|<--+ | stdout
+--+
+--------+ | +--------+ | +--------+ +--------+ |
| | stderr | | | stderr | |
| +--------+ | +--------+ |
| | channel+--+ |
| +--------+ |
+-----------------------------------------------+ 打
開 一 個 用 來 讀
的 命 令 管 道
+-----------------------------------------------+
| |
+--------+ | +--------+ +--------+ +--------+ |
| stdin |<--+---+ stdin | | pipein |<--+ | stdin +--+
+--------+ +--------+ +--------+ | +--------+
| stdout |<------+ stdout | +-->| pipeout| +--+ stdout
|
+--------+ +--------+ | +--------+ +--------+
| stderr | | | stderr |
+--------+ | +--------+
| channel+--+
+--------+
Tcl <== Pipeline <== command
串 行 通 信 SERIAL COMMUNICATIONS
如 果 fileName 參 照 一 個 串 行 端 口 , 則 打 開 特 定 的 串 行 端 口 並 以 依 賴 於 平 臺 的 方 │ 式 初 始 化 。 給 fileName 用 以 打 開 一 個 串 行 端 口 的 可 接 受 的 值 在 移 植 要 點 中 描 │ 述 。 │
配 置 選 項 CONFIGURATION OPTIONS
│ 使 用 fconfigure 命 令 來 爲 打 開 的 串 行 端 口 查 詢 和 設 置 下 列 選 項 : │
-mode
baud,parity,data,stop
│ 這 個 選 項
是 由 逗 號 分 隔
的 四 個 值 的 一
個 集 合 : 這 個 串
行 端 口 的 波
│ 特 (baud)率 、 奇
偶 校 驗 (parity)、 數
據 位 數 、 和 停
止 位 。 baud 率 是
│ 指 定 連 接
速 度 的 一 個 簡
單 整 數 。 Parity 是
下 列 字 母 之 一 :
│ n、 o、
e、 m、 s; 分
別 表 示 奇 偶 校
驗 選 項 │
“none”、 “odd”、
“even”、 “mark”、
或 “space”。 Data 是
數 據 位 │ 數
, 應 當 是 從 5 到 8
中 的 一 個 整 數
, 而 stop 是 停 止
位 的 數 目 , 應
│ 當 是 整 數 1
或 2。 │
-pollinterval msec │ 只
在 Windows 上 串 行 端
口 能 獲 得 這 個
選 項 , 它 被 用
來 設 置 文 件 事
件 │ 輪 詢 (poll)之
間 的 最 大 時 間
。 這 影 響 整 個 Tcl
解 釋 器 檢 查 事
件 中 間 │ 的
時 間 間 隔 (總 是
採 用 最 小 的 值
)。 只 有 在 你 想
要 使 輪 詢 這 個
串 行 端 口 的 時
│ 間 間 隔 小
於 10 msec (缺 省 值 )時
才 使 用 這 個 選
項 。 │
-lasterror │ 只 在 Windows
上 串 行 端 口 能
獲 得 這 個 選 項
, 並 只 能 查 詢
(只 在 直 接 請 求
時 │ 報 告 )。
在 串 行 通 信 出
錯 的 情 況 下 ,
read 或 puts 返 回 一
個 一 般 Tcl │ 文
件 I/O 錯 誤 。 可 以
調 用 fconfigure -lasterror 來
得 到 錯 誤 │
詳 情 的 一 個 列
表 (例 如 , FRAME
RXOVER)。
移 植 要 點 PORTABILITY ISSUES
│
Windows (所
有 版 本 ) │ 給
fileName 來 打 開 一 個
串 行 端 口 的 有
效 值 的 形 式 是
comX:, 這 裏
X │ 是 一 個
數 , 一 般 是 從 1
到 4。 如 果 系 統
有 多 於 四 個 串
行 端 口 , 則 這
個 符 │ 號
(notation)可 以 表 示 串
行 端 口 從 1 到 9。
嘗 試 打 開 一 個
不 存 在 或 │
序 號 大 於 9 的 串
行 端 口 將 導 致
錯 誤 。 打 開 串
行 端 口 的 可 替
代 的 方 法 │
是 使 用 文 件 名
\\.\comX, 這 裏 X 是
對 應 於 一 個 串
行 端 口 的 任
│ 何 (整 )數 ;
請 注 意 , 這 個
方 法 在 Windows 95 和 Windows 98
上 相 當 │ 的
慢 。 │
Windows NT │ 在 交 互
運 行 Tcl 的 時 候 ,
如 果 存 在 一 個
控 制 檯 , 則 在
真 實 的 控 制 檯
│ 和 使 用 標
準 輸 入 或 輸 出
的 一 個 命 令 管
道 之 間 可 能 有
一 些 奇 怪 的 相
互 作 │ 用 。
如 果 爲 讀 而 打
開 一 個 命 令 管
道 , 在 這 個 控
制 檯 鍵 入 的 一
些 行 將 被 髮 送
│ 到 命 令 管
道 而 一 些 行 將
別 發 送 到 Tcl 求 值
器 。 如 果 爲 寫
而 打 開 │ 一
個 命 令 管 道 ,
在 管 道 關 閉 之
前 , 在 這 個 控
制 檯 中 鍵 入 的
擊 │ 鍵 (keystroke)將
一 直 是 不 可 見
的 。 在 執 行 16-bit 或
32-bit │ 應 用 程
序 時 都 可 能 發
生 這 種 事 情 。
這 些 問 題 只 發
生 在 Tcl 和 子 應 用
│ 程 序 同 時
競 爭 這 個 控 制
檯 的 時 候 。 如
果 命 令 管 道 是
從 一 個 腳 本 中
啓 動 │ 的 ,
所 以 Tcl 不 訪 問 控
制 檯 , 或 者 命
令 管 道 不 使 用
標 準 輸 出 或
│ 輸 出 , 而
是 重 定 向 (從 或
)到 一 個 文 件 ,
那 麼 上 述 問 題
不 發 生 。 │
Windows 95 │ 不 能 同
時 爲 讀 寫 而 打
開 一 個 命 令 管
道 來 執 行 一 個 16-bit
DOS 應 用 程 │ 序
, 因 爲 從 一 個
管 道 接 收 標 準
輸 入 和 向 一 個
管 道 發 送 標 準
輸 出 的 (兩 個 )
│ 16-bit DOS 應 用 程
序 同 步 運 行 。
不 執 行 16-bit DOS 應 用
程 序 的 命 │
令 管 道 異 步 運
行 並 且 可 以 同
時 爲 讀 寫 而 打
開 。 │ 在 交
互 運 行 Tcl 的 時 候
, 如 果 存 在 一
個 控 制 檯 , 則
在 真 實 的 控 制
檯 │ 和 使 用
標 準 輸 入 或 輸
出 的 一 個 命 令
管 道 之 間 可 能
有 一 些 奇 怪 的
相 互 作 │ 用
。 如 果 爲 從 一
個 32-bit 應 用 程 序 讀
而 打 開 一 個 命
令 管 道 , 在
│ 這 個 控 制
檯 鍵 入 的 一 些
擊 鍵 將 被 髮 送
到 命 令 管 道 而
一 些 擊 鍵 將 別
發 送 到 │ Tcl 求
值 器 。 如 果 爲
向 一 個 32-bit 應 用 程
序 寫 而 打 開 一
個 命 令 管 │
道 , 在 管 道 關
閉 之 前 , 在 控
制 檯 中 將 一 直
沒 有 輸 出 是 可
見 的 。 這 些 問
題 只 │ 發 生
在 Tcl 和 子 應 用 程
序 同 時 競 爭 這
個 控 制 檯 的 時
候 。 如 果 命
│ 令 管 道 是
從 一 個 腳 本 中
啓 動 的 , 所 以 Tcl
不 訪 問 控 制 檯
, 或 者 │ 命
令 管 道 不 使 用
標 準 輸 出 或 輸
出 , 而 是 重 定
向 (從 或 )到 一 個
文 件 , 那 麼 上
│ 述 問 題 不
發 生 。 │ 不
論 Tcl 是 否 在 交 互
的 運 行 , 如 果
爲 從 一 個 16-bit DOS 應
用 程 序 │ 讀
而 打 開 一 個 命
令 管 道 , 在 從
命 令 管 道 的 標
準 輸 出 收 到 文
件 結 束 之 前 ,
對 │ open 的 調
用 一 直 不 返 回
。 如 果 爲 向 一
個 16-bit DOS 應 用 程 序
寫 而 │ 打 開
一 個 命 令 管 道
, 在 管 道 實 際
上 被 關 閉 之 前
, 沒 有 數 據 被
髮 送 到 命 令 管
│ 道 的 標 準
輸 出 。 象 上 面
描 述 的 那 樣 ,
這 個 問 題 發 生
的 原 因 是 16-bit
│ DOS 應 用 程 序
同 步 運 行 。
│
Macintosh │ 在 Macintosh 下
目 前 未 實 現 打
開 串 行 端 口 。
│ 在 Macintosh 不 支
持 打 開 命 令 管
道 , 原 因 是 應
用 程 序 不 支 持
標 準 輸 │ 入
或 輸 出 的 概 念
。 │
Unix │ 給 fileName
來 打 開 一 個 串
行 端 口 的 有 效
值 的 形 式 是
/dev/ttyX, 這 裏 的
│ X 是 a 或
b, 但 是 可 以
使 用 映 射 到 一
個 串 行 端 口 的
任 何 僞 文 │
件 (pseudo-file)的 名 字 。
│ 在 交 互 運
行 Tcl 的 時 候 , 如
果 存 在 一 個 控
制 檯 , 則 在 真
實 的 控 制 檯
│ 和 使 用 標
準 輸 入 或 輸 出
的 一 個 命 令 管
道 之 間 可 能 有
一 些 奇 怪 的 相
互 作 │ 用 。
如 果 爲 讀 而 打
開 一 個 命 令 管
道 , 在 這 個 控
制 檯 鍵 入 的 一
些 行 將 被 髮 送
│ 到 命 令 管
道 而 一 些 行 將
別 發 送 到 Tcl 求 值
器 。 這 些 問 題
只 發 生 在 │ Tcl
和 子 應 用 程 序
同 時 競 爭 這 個
控 制 檯 的 時 候
。 如 果 命 令 管
道 是 從 一 │
個 腳 本 中 啓 動
的 , 所 以 Tcl 不 訪
問 控 制 檯 , 或
者 命 令 管 道 不
使 │ 用 標 準
輸 出 或 輸 出 ,
而 是 重 定 向 (從
或 )到 一 個 文 件
, 那 麼 上 述 問
題 不 發 │ 生
。 │ 關 於 在
不 同 平 臺 上 執
行 應 用 程 序 請
參 見 exec 命 令 的
移 植 要 點 章 節
來 得 到 不 特 定
│ 於 命 令 管
道 的 額 外 的 信
息 。 │
參 見 SEE ALSO
│
file(n), close(n), filename(n), fconfigure(n), gets(n), read(n), │ puts(n), exec(n), fopen(1) │
關 鍵 字 KEYWORDS
│
access mode, append, create, file, non-blocking, open, permissions, │ pipeline, process, serial │
[中 文 版 維 護 人 ]
│ 寒 蟬 退 士 │
[中 文 版 最 新 更 新 ]
│
2001/10/16 │
《 中 國 Linux 論 壇 man 手 冊 頁 翻 譯 計 劃 》 :
│
跋
│ 本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 │ 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh │