linux高级编程(1)

linux操作系统编程:

实现一个 用户程序 
(1).库函数 --来实现 
(2).系统调用 

也就是说,程序要进行系统调用的话,有直接和间接(通过库函数)两种方式

linux里面对文件的处理:
思想:
      一切皆文件 
      everything is file!

linux中文件类型:

b -- block      -- 块设备文件   --- 硬盘 ---- ls -l /dev/sda 
c -- character  -- 字符设备文件 --- 鼠标 ---- ls -l /dev/input/
d -- directory  -- 目录文件     
- -- regular    -- 普通文件 
l -- link       -- 软连接文件   --- 类似windows的快捷方式  
p -- pipe       -- 管道文件     --- 实现操作系统中 进程间的一些 信息交换(通信)
s -- socket     -- 套接字文件   --- 网络的时候 (进程间的通信)

操作文件基本思路:

文件操作三步骤:
1.打开 
2.读写
3.关闭 

—>

1.打开 -- fopen  //FILE open
2.读写 -- getchar/putchar 
          gets / puts 
          fread / fwrite 
3.关闭 -- fclose 

小结:

总结:
1.两种思路 
  库 
  系统调用 
2.思想 
  一切皆文件 
3.文件的操作基本步骤 
  a.打开 
  b.读写 
  c.关闭 

学习一个函数:

1.函数的名+函数功能 
2.函数的参数的使用 
3.函数的返回值 

补充man手册查看函数:
NAME:        函数名的介绍 以及 功能的简要说明 
SYNOPSIS:    头文件+函数原型 
DESCRIPTION:  函数的使用的细节 ,参数,返回值 
RETURN VALUE: 函数返回值 

man手册作为权威参照,但是用这个来学习一个函数比较困难

流打开函数fopen:

参数:
    @path --要打开的文件的文件名(字符串形式)
    @mode --打开文件的操作模式
        r ---打开文件做读操作
             注意:
             文件必须存在 
             
        r+   打开文件做读写操作
             注意:
             文件必须存在
        w    打开文件做写操作
             注意:
             如果文件已经存在,则会将文件截断为0
             如果文件不 存在,则会创建一个新文件。
             
        w+  打开文件做读写操作
             注意:
             如果文件已经存在,则会将文件截断为0
             如果文件不 存在,则会创建一个新文件。

        a    打开文件做写操作
             注意:
             如果文件已经存在,则在文件末尾进行写入 
             如果文件不存在,则会创建一个新文件。
        a+   
            打开文件做读写操作
             注意:
             如果文件已经存在,则在文件末尾进行写入 
             如果文件不存在,则会创建一个新文件。

       使用w或w+打开文件时,文件会截断为0,也就是文件内容会被删除,如果想要续写文件的话,只能使用a或a+的方式打开

       而使用r+只能打开已经存在的文件,a+却可以创建文件,所以a+的功能相对而言比较强大

返回值:
   成功 FILE * 
   失败 NULL 并且 设置 errno 表明错误原因

流指针:

FILE * fp 
     (1).流
      FILE * fp;//流指针------关联一个文件   
      FILE * 实际上是指向了一块内存空间(缓存,fileno)

FILE实际上是一个结构体,里面存储了指定文件的全部信息,如读写位置,我们写程序时通过流这个媒介来操作文件,以便更灵活的处理

文件描述符:

文件描述符(file descriptor)是一个用于标识打开文件或I/O设备的整数值。

常见的文件描述符包括:

标准输入(stdin):文件描述符为0,宏为STDIN_FILENO,通常用于接收应用程序的输入。

标准输出(stdout):文件描述符为1,宏为STDOUT_FILENO,通常用于输出应用程序的结果。

标准错误(stderr):文件描述符为2,宏为STDERR_FILENO,通常用于输出应用程序的错误信息。

因此,我们在写程序时文件描述符从3开始,依次往下

标准IO:

标准IO处理了很多细节:
    (1).处理缓冲区分配   (缓存--提高效率 --- 慢速 快速)
    (2).读写IO的块长度的优化
    (3).对系统调用进行了封装,内部对应的"文件描述符"

缓冲区:

行缓冲:1k, terminal,主要用于人机交互stdout

        1.遇到\n刷新
        2.缓存区满刷新
        3.程序结束刷新
        4.fflush刷新  fflush(stdout);

全缓冲:4k,主要用于文件的读写

        1.缓存区满刷新
        2.程序结束刷新
        3.fflush来刷新  fflush(fp);

无缓冲:0k  主要用于出错处理信息的输出 stderr 

          不对数据缓存直接刷新(要保证出错第一时间看到)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值