这篇文章开始将要介绍Linux应用编程所涉及的API(应用编程接口)。学习Linux应用编程就是要学会使用常用的函数来实现特定的功能。首先需要学会的是文件IO操作函数的使用,在前面的文章中我们知道在Linux系统中“一切皆文件”,因此学会对文件的操作至关重要。所包含的函数有open、close、write、read、lseek 等。这些函数是最简单也是最常用的。话不多说,开启文件IO操作函数。
在Linux的发行版系统中(我这里用的是Ubuntu14.04)命令行输入man 2 open,将会打开关于open&creat系统调用的详细信息,所包含的头文件和函数声明如下图所示:
image.png
open&creat的函数声明如下所示:
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
int creat(const char *pathname, mode_t mode);
(1)首先演示open函数的第一种用法
int open(co image.png nst char *pathname, int flags);打开已经存在的文件,如果文件不存在,则会报错。
#include <stdio.h>
  • //open函数所需要的头文件
  • #include <sys/types.h>
  • #include <sys/stat.h>
  • #include <fcntl.h>
  • int main(int argc, char *argv[])
  • {
  •         int fd = -1;//定义open函数返回值变量,也就是所打开的文件描述符
  •        
  •         fd = open("a.txt", O_RDWR);//以读写的方式打开当前路径下的a.txt文件
  •         if(fd < 0)
  •         {
  •                 perror("open a.txt error ");//如果打开失败,将出错原因打印出
  •         }
  •         else
  •         {
  •                 printf("open a.txt success\n");//如果打开成功,提示。
  •         }
  •        
  •         return 0;
  • }
  • 复制代码
    image.png
    如果在当前路径下没有a.txt文件和在当前路径下创建a.txt文件,运行结果是不一样的。touch a.txt表示在当前路径下创建a.txt文件。运行结果如下图所示:
    image.png
    (2)其次演示open函数的第二种用法
    int open(const char *pathname, int flags, mode_t mode);创建不存在的文件并打开,如果文件存在则新创建的文件会覆盖原来的同名文件。
    只需要将open第一种方法代码中的fd = open("a.txt", O_RDWR);//以读写的方式打开当前路径下的a.txt文件换成fd = open("a.txt", O_RDWR | O_CREAT, 0777);//以读写的方式创建当前路径下的a.txt文件并打开即可。代码如下图所示:
    image.png
    运行结果如下图所示:
    image.png

    (3)最后演示creat函数的用法
    int creat(const char *pathname, mode_t mode);以只写的方式创建文件,如果文件存在则覆盖原来的同名文件。
    只需要将open第二种方法中的fd = open("a.txt", O_RDWR | O_CREAT, 0777);//以读写的方式创建当前路径下的a.txt文件并打开换成fd = creat("a.txt", 0777);//以只写的方式创建当前路径下的a.txt文件并打开即可。代码如下图所示:
    image.png
    运行结果如下图所示:
    image.png
    以上就是对open&write函数的介绍,在这里只是演示了open&write函数的基本用法,使得对Linux 文件IO操作有一个感性的认识,下一篇文章将对函数做详细说明。