Linux文件编程(一)

  • Post author:
  • Post category:linux




Linux文件打开及创建(一)



open函数原型

在Linux命令窗口中使用man手册查询函数原型,参数,返回值


man 2 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_t mode);

1.pathname:

要打开的文件名(含路径,缺省为当前路径)

2.flags:

O_RDONLY 只读打开 O_WRONLY 只写打开

O_RDWR 可读可写打开

3.mode:

创建模式,指定用户操作权限(针对三种用户设置:所处用户,所处用户组,其他用户

权限:读,写,执行

0表示没有任何权限

 S_IRUSR可读,4

 S_IWUSR可写,2

 S_IXUSR可执行,1

S_IRWXR可读、写、执行)7(也可以用数字代替,如0777)

可读可写权限0600:(6是4+2,可读加可写,0是用户组权限,0是其它用户权限)

4.当我们附带了权限后,打开的文件只能按照这种权限来操作。以上三种常数中应当只指定一个。下列常数是可选择的

用‘|’运算符连接

O_CREAT ——若文件不存在则创建它。使用此选项时,需要同时说明第三个参数mode,用其说明该新文件的存取许可权限

O_EXCL ——如果同时指定了O_CREAT,而文件已经存在,则出错

O_APPEND ——每次写时都加到文件的尾端

O_TRUNC ——去打开文件的时候,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短0,也就是全部删除

5.返回值:

1、返回值是一个整数。

2、打开文件成功,返回文件描述符。

3、打开文件失败,返回-1。



文件描述符fd

文件描述符在形式上 是一个非负整数。它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕文件描述符展开。

习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。
0,1,2对应的物理设备一一般是:键盘,显示器,显示器。
所以通常当我们成功打开文件时,返回的fd都是从3起。



例子

int main()
{
	int fd;
	fd = open("./file 1",O_RDWR);
	if(fid==-1)
	{
		printf("open file 1 failed\n");
		fd=open("./file 1",O_RDWR | O_CREAT,0600);
		if(fd>0)
		{
			printf("creat file 1 \n");
		}
	}
}



版权声明:本文为WPR_001原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。