open(程式語言)

open(程式語言)

本詞條是多義詞,共3個義項
更多義項 ▼ 收起列表 ▲

open是多種語言、環境的一種函式,LINUX中open函式作用:打開和創建檔案。PB程式語言中open功能:打開視窗。

基本介紹

  • 中文名:open函式
  • 外文名:open
  • 套用:PB程式,C語言
  • 類別:程式函式
程式語言,系統調用函式,PB程式語言,Visual Basic語句,Javascript,函式定義,相關函式,函式說明,參數mode 組合,返回值,錯誤代碼,附加說明,定義和用法,MFC,

程式語言

系統調用函式

作用:打開和創建檔案。
簡述:open是UNIX系統(包括LINUX、Mac等)的系統調用函式,區別於C語言庫函式fopen。
#include<fcntl.h>int open(constchar*pathname,intflags);int open(constchar*pathname,intflags,mode_tmode);返回值:成功則返回檔案描述符,否則返回-1
對於open函式來說,第三個參數僅當創建新檔案時(即 使用了O_CREAT 時)才使用,用於指定檔案的訪問許可權位(access permission bits)。pathname 是待打開/創建檔案的POSIX路徑名(如/home/user/a.cpp);flags 用於指定檔案的打開/創建模式,這個參數可由以下常量(定義於fcntl.h)通過邏輯位或邏輯構成。
O_RDONLY唯讀模式O_WRONLY只寫模式O_RDWR讀寫模式
打開/創建檔案時,至少得使用上述三個常量中的一個。以下常量是選用的:
O_APPEND每次寫操作都寫入檔案的末尾O_CREAT如果指定檔案不存在,則創建這個檔案O_EXCL如果要創建的檔案已存在,則返回-1,並且修改errno的值O_TRUNC如果檔案存在,並且以只寫/讀寫方式打開,則清空檔案全部內容(即將其長度截短為0)O_NOCTTY如果路徑名指向終端設備,不要把這個設備用作控制終端。O_NONBLOCK如果路徑名指向FIFO/塊檔案/字元檔案,則把檔案的打開和後繼I/O
設定為非阻塞模式
(nonblockingmode)
以下三個常量同樣是選用的,它們用於同步輸入輸出
O_DSYNC等待物理I/O結束後再write。在不影響讀取新寫入的數據的前提下,不等待檔案屬性更新。
O_RSYNCread等待所有寫入同一區域的寫操作完成後再進行O_SYNC等待物理I/O結束後再write,包括更新檔案屬性的I/O
open返回的檔案描述符一定是最小的未被使用的描述符。
如果 NAME_MAX(檔案名稱最大長度,不包括'\0')是 14,而我們想在當前目錄下創建檔案名稱長度超過 14 位元組的檔案,早期的 System V 系統(如 SVR2)會截斷超出部分,只保留前 14 個位元組;而由 BSD 衍生的(BSD-derived)系統會返回錯誤信息,並且把 errno 置為 ENAMETOOLONG。
POSIX.1 引入常量 _POSIX_NO_TRUNC 用於決定是否截斷長檔案名稱/長路徑名。如果_POSIX_NO_TRUNC 設定為禁止截斷,並且路徑名長度超過 PATH_MAX(包括 '\0'),或者組成路徑名的任意檔案名稱長度超過 NAME_MAX,則返回錯誤信息,並且把 errno 置為 ENAMETOOLONG。

PB程式語言

功能打開視窗。該函式有兩種語法格式:
語法一、打開編程時已知數據類型的視窗對象
語法二、打開程式運行後才能確定數據類型的視窗對象。下面分別予以介紹:
語法一、打開編程時已知數據類型的視窗對象
語法Open( windowvar {,parent } )
參數windowvar:要打開視窗的視窗名,可以使用視窗畫筆定義的視窗對象名,也可以使用該視窗對象的某個變數。Open()函式把打開視窗的引用放置到windowvar變數中parent:可選項,指定要打開視窗的父視窗,要打開視窗成為父視窗的子視窗,只有當要打開視窗需要成為某個視窗的子視窗時才需要指定該參數。如果應用程式使用Open()函式打開某個子視窗或彈出視窗而又省略了該參數,那么當前活動視窗成為被打開視窗的父視窗返回值Integer。函式執行成功時返回1,發生錯誤時返回-1。如果任何參數的值為NULL,Open()函式返回NULL。
語法二、打開程式運行後才能確定數據類型的視窗對象
語法Open
( windowvar,windowtype {,parent } )
參數windowvar:指定視窗變數名,Open()函式把打開視窗的引用放置到該變數中windowtype:string類型,指定要打開視窗的數據類型,該參數指定的視窗數據類型必須與windowvar參數的類型相同或是windowvar類型的後繼對象parent:可選項,指定要打開視窗的父視窗,要打開視窗成為父視窗的子視窗,只有當要打開視窗需要成為某個視窗的子視窗時才需要指定該參數。如果應用程式使用Open()函式打開某個子視窗或彈出視窗而又省略了該參數,那么當前活動視窗成為被打開視窗的父視窗返回值Integer。函式執行成功時返回1,發生錯誤時返回-1。如果任何參數的值為NULL,Open()函式返回NULL。

Visual Basic語句

VB 中,Open 語句提供對檔案的讀取、寫入、限定於其它進程打開的檔案的操作。
語句結構:
OpenpathnameFormode[Accessaccess] [lock]As[#]filenumber[Len=reclength]
部分
描述
pathname
必要。字元串表達式,指定檔案名稱,該檔案名稱可能還包括目錄、資料夾及驅動器。
mode
必要。關鍵字,指定檔案方式,有AppendBinaryInputOutput、或Random方式。如果未指定方式,則以Random訪問方式打開檔案。
access
可選。關鍵字,說明打開的檔案可以進行的操作,有ReadWrite、或Read Write操作。
lock
可選。關鍵字,說明限定於其它進程打開的檔案的操作,有SharedLock ReadLock Write、和Lock Read Write操作。
filenumber
必要。一個有效的檔案號,範圍在 1 到 511 之間。使用FreeFile函式可得到下一個可用的檔案號。
reclength
可選。小於或等於 32,767(位元組)的一個數。對於用隨機訪問方式打開的檔案,該值就是記錄長度。對於順序檔案,該值就是緩衝字元數。
對檔案做任何 I/O 操作之前都必須先打開檔案。Open語句分配一個緩衝區供檔案進行 I/O 之用,並決定緩衝區所使用的訪問方式。
如果pathname指定的檔案不存在,那么,在用AppendBinaryOutput、或Random方式打開檔案時,可以建立這一檔案。
如果檔案已由其它進程打開,而且不允許指定的訪問類型,則Open操作失敗,而且會有錯誤發生。
如果modeBinary方式,則Len子句會被忽略掉。
BinaryInputRandom方式下可以用不同的檔案號打開同一檔案,而不必先將該檔案關閉。在AppendOutput方式下,如果要用不同的檔案號打開同一檔案,則必須在打開檔案之前先關閉該檔案。
若要關閉 Open 所打開的檔案,就要使用 Close 語句
Close 語句:關閉Open語句所打開的輸入/輸出 (I/O) 檔案,
Close 語句結構:
Close[filenumberlist]
可選的filenumberlist參數為一個或多個檔案號,其中filenumber為任何有效的檔案號,

Javascript

Javascript 中的 Open 方法可以(默認在新視窗)打開任意一個 URL。(必須和 Window 一起使用)
Window.Open 語句結構:
window.open(URL,name,features,replace) , 相關信息可以查看本詞條的對 Javascript Open 方法
實例:(在HTML插入)
<html><head><script>functionopenurl(){window.open("引號添加地址")//引號不能刪掉,URL必須加HTTP://HTTPS://FTP://等協定名稱</script></head><body><ahref="javascript:void(0)"onclick="openurl()">OpenBaidu</a></body></html>

函式定義

相關函式

open(打開檔案)
相關函式
頭檔案
#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>
定義函式
int open(const char *pathname,int flags);int open(const char *pathname,int flags,mode_tmode);

函式說明

參數pathname 指向欲打開的檔案路徑字元串。下列是參數flags 所能使用的標誌位
O_RDONLY    以唯讀方式打開檔案O_WRONLY    以只寫方式打開檔案O_RDWR      以可讀寫方式打開檔案。
上述三種標誌位是互斥的,也就是不可同時使用,但可與下列的標誌位利用OR(|)運算符組合。
O_CREAT   若欲打開的檔案不存在則自動建立該檔案。O_EXCL    如果O_CREAT也被設定,此指令會去檢查檔案是否存在。檔案若不存在則建立該檔案,否則將導致打開檔案錯誤。此外,若O_CREAT與O_EXCL同時設定,並且欲打開的檔案為符號連線,則會打開檔案失敗。O_NOCTTY  如果欲打開的檔案為終端機設備時,則不會將該終端機當成進程控制終端機。O_TRUNC   若檔案存在並且以可寫的方式打開時,此標誌位會令檔案長度清為0,而原來存於該檔案的資料也會消失。O_APPEND  當讀寫檔案時會從檔案尾開始移動,也就是所寫入的數據會以附加的方式加入到檔案後面。O_NONBLOCK    以不可阻斷的方式打開檔案,也就是無論有無數據讀取或等待,都會立即返回進程之中。O_NDELAY  同O_NONBLOCK。O_SYNC    以同步的方式打開檔案。O_NOFOLLOW    如果參數pathname所指的檔案為一符號連線,則會令打開檔案失敗。O_DIRECTORY   如果參數pathname所指的檔案並非為一目錄,則會令打開檔案失敗。

參數mode 組合

此為Linux2.2以後特有的標誌位,以避免一些系統安全問題。參數mode 則有下列數種組合,只有在建立新檔案時才會生效,此外真正建檔案時的許可權會受到umask值所影響,因此該檔案許可權應該為(mode-umaks)。
S_IRWXU,    700許可權,代表該檔案所有者具有可讀、可寫及可執行的許可權。S_IRUSR或S_IREAD,  400許可權,代表該檔案所有者具有可讀取的許可權。S_IWUSR或S_IWRITE, 200許可權,代表該檔案所有者具有可寫入的許可權。S_IXUSR或S_IEXEC,  100許可權,代表該檔案所有者具有可執行的許可權。S_IRWXG,  070許可權,代表該檔案用戶組具有可讀、可寫及可執行的許可權。S_IRGRP,  040許可權,代表該檔案用戶組具有可讀的許可權。S_IWGRP,  020許可權,代表該檔案用戶組具有可寫入的許可權。S_IXGRP,  010許可權,代表該檔案用戶組具有可執行的許可權。S_IRWX,   O07許可權,代表其他用戶具有可讀、可寫及可執行的許可權。S_IROTH,  004許可權,代表其他用戶具有可讀的許可權S_IWOTH,  002許可權,代表其他用戶具有可寫入的許可權。S_IXOTH,  001許可權,代表其他用戶具有可執行的許可權。

返回值

若所有欲核查的許可權都通過了檢查則返回檔案描述符,表示成功,只要有一個許可權被禁止則返回-1。

錯誤代碼

EEXIST    參數pathname所指的檔案已存在,卻使用了O_CREAT和O_EXCL標誌位。EACCESS   參數pathname所指的檔案不符合所要求測試的許可權。EROFS     欲測試寫入許可權的檔案存在於唯讀檔案系統內。EFAULT    參數pathname指針超出可存取記憶體空間。EINVAL    參數mode不正確。ENAMETOOLONG    參數pathname太長。ENOTDIR   參數pathname不是目錄。ENOMEM    核心記憶體不足。ELOOP     參數pathname有過多符號連線問題。EIO       I/O存取錯誤。

附加說明

使用access()作用戶認證方面的判斷要特別小心,例如在access()後再作open()空檔案可能會造成系統安全上的問題。

定義和用法

定義和用法
open() 方法用於打開一個新的瀏覽器視窗或查找一個已命名的視窗。
語法
window.open(URL,name,features,replace)
參數描述
URL
一個可選的字元串,聲明了要在新視窗中顯示的文檔的 URL。如果省略了這個參數,或者它的值是空字元串,那么新視窗就不會顯示任何文檔。
name
一個可選的字元串,該字元串是一個由逗號分隔的特徵列表,其中包括數字、字母和下劃線,該字元聲明了新視窗的名稱。這個名稱可以用作標記 <a> 和 <form> 的屬性 target 的值。如果該參數指定了一個已經存在的視窗,那么 open() 方法就不再創建一個新視窗,而只是返回對指定視窗的引用。在這種情況下,features 將被忽略。
features
一個可選的字元串,聲明了新視窗要顯示的標準瀏覽器的特徵。如果省略該參數,新視窗將具有所有標準特徵。在視窗特徵這個表格中,我們對該字元串的格式進行了詳細的說明。
replace
一個可選的布爾值。規定了裝載到視窗的 URL 是在視窗的瀏覽歷史中創建一個新條目,還是替換瀏覽歷史中的當前條目。支持下面的值:true - URL 替換瀏覽歷史中的當前條目。false - URL 在瀏覽歷史中創建新的條目。
提示和注釋
請不要混淆方法 Window.open() 與方法 Document.open(),這兩者的功能完全不同。為了使您的代碼清楚明白,請使用 Window.open(),而不要使用 open()。
實例
<html> <body> <script type="text/javascript"> myWindow=window.open('','','width=200,height=100')myWindow.document.write("This is 'myWindow'") myWindow.focus() </script> </body> </html>

MFC

CDaoWorkspace的成員函式Open函式介紹
頭檔案:
afxdao.h
類:
CDaoWorkspace
功能:
顯式打開Dao默認工作區對應的工作區對象。
語法:
Virtual void Open(DPCTSTR lpszName =NULL);
參數:
要打開Dao工作區的名字。
說明:Open把工作區對象置為打開狀態,同時如果尚未對應用程式初始化,則初始化資料庫引擎。
示例:
/****************************************************
演示函式原型:ws. Open ();
程式功能說明:程式打開默認工作區,嘗試隔離ODBC事務。
****************************************************/
//定義CDaoWorkspace對象Ws
CDaoWorkspace Ws;
//打開工作區
Ws.Open();
//驗證工作區是否通過強制到數據源的多個連
//接分割包含相同ODBC數據源的多個事務
If(!Ws.GetIsolateODBCTrans())
//開始隔離ODBC事務
Ws. SetIsolateODBCTrans(TRUE)
//關閉工作區
Ws.Close();

相關詞條

熱門詞條

聯絡我們