open是多种语言、环境的一种函式,LINUX中open函式作用打开和创建档案。PB程式语言中open功能打开视窗。
基本介绍
- 中文名open函式
- 外文名open
- 套用PB程式,C语言
- 类别程式函式
程式语言
系统调用函式
作用打开和创建档案。
简述open是UNIX系统(包括LINUX、Mac等)的系统调用函式,区别于C语言库函式fopen。
#include<fcntl.h>int open(constcharpathname,intflags);int open(constcharpathname,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()函式把打开视窗的引用放置到该变数中windowtypestring类型,指定要打开视窗的数据类型,该参数指定的视窗数据类型必须与windowvar参数的类型相同或是windowvar类型的后继对象parent可选项,指定要打开视窗的父视窗,要打开视窗成为父视窗的子视窗,只有当要打开视窗需要成为某个视窗的子视窗时才需要指定该参数。如果应用程式使用Open()函式打开某个子视窗或弹出视窗而又省略了该参数,那幺当前活动视窗成为被打开视窗的父视窗返回值Integer。函式执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL,Open()函式返回NULL。
Visual Basic语句
VB 中,Open 语句提供对档案的读取、写入、限定于其它进程打开的档案的操作。
语句结构:
OpenpathnameFormode[Accessaccess] [lock]As[#]filenumber[Len=reclength]
部分 | 描述 |
pathname | 必要。字元串表达式,指定档案名称,该档案名称可能还包括目录、资料夹及驱动器。 |
mode | 必要。关键字,指定档案方式,有Append、Binary、Input、Output、或Random方式。如果未指定方式,则以Random访问方式打开档案。 |
access | 可选。关键字,说明打开的档案可以进行的操作,有Read、Write、或Read Write操作。 |
lock | 可选。关键字,说明限定于其它进程打开的档案的操作,有Shared、Lock Read、Lock Write、和Lock Read Write操作。 |
filenumber | 必要。一个有效的档案号,範围在 1 到 511 之间。使用FreeFile函式可得到下一个可用的档案号。 |
reclength | 可选。小于或等于 32,767(位元组)的一个数。对于用随机访问方式打开的档案,该值就是记录长度。对于顺序档案,该值就是缓冲字元数。 |
对档案做任何 I/O 操作之前都必须先打开档案。Open语句分配一个缓冲区供档案进行 I/O 之用,并决定缓冲区所使用的访问方式。
如果pathname指定的档案不存在,那幺,在用Append、Binary、Output、或Random方式打开档案时,可以建立这一档案。
如果档案已由其它进程打开,而且不允许指定的访问类型,则Open操作失败,而且会有错误发生。
如果mode是Binary方式,则Len子句会被忽略掉。
在Binary、Input和Random方式下可以用不同的档案号打开同一档案,而不必先将该档案关闭。在Append和Output方式下,如果要用不同的档案号打开同一档案,则必须在打开档案之前先关闭该档案。
若要关闭 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(打开档案)
相关函式
read,write,fcntl,close,link,stat,umask,unlink,fopen
头档案
#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();