当前位置: 首页 » 产品 » 生活保健 » 正文

Linux环境编程-文件基本操作

放大字体  缩小字体 发布日期: 2024-09-25 02:33   来源:http://www.baidu.com/  作者:无忧资讯  浏览次数:11
核心提示:  Linux 下目录是/这样的 而windows是怎么记呢?和w是不是一样的反向?所以Linux的目录就是反的反向,好记了。  一:open函数

  Linux 下目录是/这样的 而windows是怎么记呢?和w是不是一样的反向?所以Linux的目录就是反的反向,好记了。

  一:open函数

  名称:open

  目标:打开一个文件。

  头文件:#include

  #include

  #include < fcntl.h>

  函数原形:int open(const char * pathname,int flags);

  int open(const char * pathname,int flags,mode_t mode);

  参数: pathname 文件名

  flags 打开模式

  返回值:-1 遇到错误

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

  这个系统调用在进程和文件之间建立一条连接,这个连接被称为文件描述符,它就像一条由进程通向内核的管道。

  要打开一个文件,必须指定文件名和打开模式,有3种打开模式:只读,只写,可读可写,分别对应于O_RDONLY,O_WRONLY,O_RDWR,这在头文件/usr/include/fcntl.h中有定义。

  打开文件是内核提供的服务,如果在打开过程中内核检测到任何错误,这个系统调用就会返回-1。错误的类型是各种各样的,如:要打开的文件不存在。即使文件存在可能因为权限不够而无法打开,在open的联机帮助中列出了各种可能的错误,大家可以看看。

  UNIX允许一个文件被多个进程访问,也就是说当一个文件被一个进程打开后,这个文件还可以被其它进程打开。

  如果文件被顺利打开内核会返回一个正整数的值,这个数值就叫文件描述符,文件描述符是是一个简单的整数,用以标明每一个被进程所打开的文件,描述符0代表标准输出,对应的宏是 STDOUT_FILENO,描述符1代表标准输入,对应的宏为STDIN_FILENO,描述符2代表标准错误输出,对应的宏为STDERR_FILENO,系统给进程分配描述符都是从3开始的,如果同时打开好几个文件,它们所对应的的文件描述符是不同的,如果一个文件打开多次,对应的文件描述符也不相同。必须通过文件描述符对文件操作。下面的程序可以证明这一点。

  二:read函数

  名称:read

  目标:把数据读到缓冲区。

  头文件:#include < unistd.h>

  函数原形:ssize_t read(int fd, void *buf, size_t count)

  参数: fd 文件描述符

  buf 用来存放数据的目的缓冲区

  count 要读取的字节数

  返回值:-1 遇到错误

  numread 成功关闭,返回所读取的字节数目。

  read这个系统调用请求内核从fd所指定的文件中读取qty字节的数据,存放到buf所指定的内存空间中,内核如果成功地读取了数据,就返回所读取的字节数目。否则返回-1。

  当文件的字节数没有你想要的那么多时,read就会判断下一个数值是不是’’,如果是就停止读取,然后退出。numread返回的是’’之前的字节数,也就是是原文件的字节数而不是你想读的字节数。

  三:close函数

  名称:close

  目标:关闭一个文件。

  头文件:#include < unistd.h>

  函数原形:int close(int fd)

  参数: fd 文件描述符

  返回值:-1 遇到错误

  int 关闭成功,返回文件描述符。

  Close这个系统调用会关闭进程和文件fd之间的连接,如果关闭过程中出现错误,close返回-1,如:fd所指的文件并不存在。关闭成功则返回文件描述符。

  代码: 一个基本的打开文件,读取,并关闭的例子

  #include

  #include

  #include

  #include

  #include

  #include

  main()

  {

  int fd,size;

  char s [ ]="Linux Programmer!n",buffer[1024];

  fd=open("show_read.c",O_RDONLY);

  size=read(fd,buffer,sizeof(buffer));

  close(fd);

  printf("%s",buffer);

  }

  四:craet函数

  名称:creat

  目标:创建/重写一个文件

  头文件:#include

  #include

  #include < fcntl.h>

  函数原形:int creat(const char *pathname,mode_t mode)

  参数: pathname 文件名

  mode 访问模式

  返回值:-1 遇到错误

  fd 创建成功,返回文件描述符

  Creat告诉内核创建一个名为filename的文件,如果这个文件不存在,就创建它,如果已经存在,就把它的内容清空,把文件的长度设为0。

  如果内核成功地创建了文件,那么文件的许可位(permission bits)被设置为由第二个参数mode所指定的值.如:

  fd=creat(“addressbook”,0644);

  创建一个名为addressbook的文件,如果文件不存在,那么文件的许可位被设为 rw-r-r—.

  如果文件已存在它的内容会被清空。任一情况下,fd都会是指向addressbook的文件描述符。

  五:write函数

  名称:write

  目标: 将内存中的数据写入文件。

  头文件:#include < unistd.h>

  函数原形:size_t write(int fd, const void *buf, size_t count)

  参数: fd 文件描述符

  buf 内存数据

  count 要写的字节数

  返回值: -1 遇到错误

  Num written 成功写入,返回写入的字节数目。

 
 
[ 产品搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]

 

 
推荐图文
推荐产品
点击排行
    行业协会  备案信息  可信网站