文件操作
1. Linux系统调用及用户编程接口(API)
所谓系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务
为什么用户程序不能直接访问系统内核提供的服务呢?
由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。
系统调用并不是直接与程序员进行交互的,它仅仅是一个通过软中断机制向内核提交请求,以获取内核服务的接口。在实际使用中程序员调用的通常是用户编程接口—API
1.函数的作用 2.函数的参数 3.函数的返回值
Linux 文件:
“一切皆为文件”——在Linux中对目录和设备的操作都等同于对文件的操作。
普通文件、目录文件、链接文件、设备文件
文件及文件描述符——fd
文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。
系统调用——创建creat
函数的作用:创建一个文件
函数的原型:int creat(const char *pathname,mode_t mode);
文 件 头:#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
返 回 值:成功:新的文件描述符
出错:-1
mode:创建模式
S_IRUSR:可读
S_IWUSR:可写
S_IXUSR:可执行
S_IXRWU:可读、可写、可执行
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
void create_file(char *filename)
{
if(creat(filename,0755)<0){
printf("create file %s failure!\n",filename);
exit(EXIT_FAILURE);
}else{
printf("create file %s success!\n",filename);
}
}
int main(int argc,char *argv[])
{
int i;
if(argc<2)
{
perror("you haven't input the filename,please try again!\n");
exit(EXIT_FAILURE);
}
for(i=1;i<argc;i++)
{
create_file(argv[i]);
}
exit(EXIT_SUCCESS);
}
系统调用——打开open
函数的作用:打开一个文件;
函数的原型:int open(const char *pahtname, int flags);
int open(const char *pahtname, int flags, mode_t mode);