您的位置  > 互联网

创建新文件访问权限位(bits)

如果路径名指向FIFO/块文件/字符文件,则将文件打开和后续I/O设置为非阻塞模式(mode)。 以下三个常量也是可选的。 它们用于同步等待物理 I/O 的输入和输出。 写完后再写。 在不影响新写入数据读取的情况下,不等待文件属性更新。 读取等待同一区域的所有写入操作完成后再继续。 在写入之前等待物理 I/O 完成,包括用于更新文件属性的 I/O。 open 返回的文件描述符必须是最小的未使用描述符。 如果(文件名最大长度,不包括'\0')为14,而我们要在当前目录下创建一个文件名长度超过14字节的文件,早期的V系统(如SVR2)会截断多余的部分并且只保留前14个字节; BSD 派生 (BSD-) 系统将返回错误消息并将 errno 设置为 。 POSIX.1 引入了常量来确定是否截断长文件名/长路径名。 如果设置为禁用截断而路径名长度超过(包括'\0'),或者组成路径名的任意文件名长度超过,则会返回错误信息,并将errno设置为。

Linux C语言中open函数相关函数 open(打开文件)相关函数 read, write, fcntl, close, link, stat, umask,, fopen 头文件 # # # int open( const char *, int flags); int open( const char * ,int 标志, 模式); 函数描述参数指向要打开的文件路径字符串。 以下标志可用于 flags 参数: 以只读方式打开文件。 打开文件仅用于写入。 打开文件进行读取和写入。 上述三个标志是互斥的,即它们不能同时使用,但可以使用 OR (|) 运算符与以下标志组合。 如果您要打开的文件不存在,则会自动创建该文件。 如果也设置了,该指令将检查文件是否存在。 如果文件不存在,则创建该文件,否则会导致打开文件出错。 另外,如果同时设置并且要打开的文件是符号链接,则文件将无法打开。

如果要打开的文件是终端设备,则该终端不会被视为进程控制终端。 如果文件存在并且打开进行写入,则该标志会将文件长度清除为 0,并且最初存储在文件中的数据将消失。 读写文件时,都会从文件末尾开始移动,即写入的数据会追加到文件末尾。 以不可阻塞的方式打开文件,即无论是否有数据读取或等待,都会立即返回进程。 相同的。 同步打开文件。 如果参数指向的文件是符号链接,则打开文件将失败。 如果参数指向的文件不是目录,则打开文件将失败。 参数模式组合是.2之后的唯一标志,以避免一些系统安全问题。 参数mode有以下几种组合,只有在创建新文件时才会生效。 另外,实际创建文件时的权限会受到umask值的影响,所以文件权限应该是(mode-umaks)。 00700权限表示文件所有者拥有可读、可写、可执行的权限。 或者,00400权限,表示文件所有者有可读权限。

或者,00200权限,表示文件所有者有写权限。 或者,00100权限,表示文件所有者具有可执行权限。 00070权限表示该文件用户组具有可读、可写、可执行的权限。 00040权限表示该文件用户组具有可读权限。 00020权限表示该用户组对该文件有写权限。 00010权限表示该文件用户组具有可执行权限。 00007权限表示其他用户具有可读、可写、可执行的权限。 00004权限,表示其他用户有可读权限。 00002权限,表示其他用户有可写的权限。 00001权限,表示其他用户有可执行权限。 返回值 如果所有待检查的权限都检查通过,则返回文件描述符,表示成功。 只要一项权限被禁止,就会返回-1。 错误代码参数指向的文件已存在,但使用了 和 标志。 参数指向的文件不满足测试所需的权限。

EROFS 要测试写入权限的文件存在于只读文件系统中。 参数指针超出了可访问的内存空间。 参数模式不正确。 参数太长。 该参数不是目录。 核心内存不足。 ELOOP 参数有太多符号链接。 EIO I/O 访问错误。 附加说明: 使用()对用户认证进行判断时要特别小心。 例如,在()之后打开()一个空文件可能会导致系统安全问题。 示例 # # # # main() { int fd,size; char s [ ]=”Linux!\n”,[80]; fd=open(“/tmp/temp”,|); 写(fd,s,(s)); 关闭(fd); fd=open(“/tmp/temp”,); 大小=读取(fd,,()); 关闭(fd); (“%s”,); } 执行Linux!