I/O操作和进程一个案例

本文介绍标准I/O库如何使用流的概念来抽象文件操作,重点解释了流缓冲区的作用,并通过一个C语言示例展示了如何进行文件的读取操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标准I/O库将一个打开的文件模型化为一个流,一个流就是一个指向FILE类型的结构的指针,对于每个ANSIC程序开始时,都有三个打开的流stdin,stdout

,stderr,分别对应于标准输入,输出,错误。类型为FILE的流是对文件描述符和流缓冲区抽象,流缓冲区的目是为了使得开销较高的系统I/O系统调用尽量可能少,例如:

一个程序如果反复调用标准I/O的getc函数,每次调用返回文件的下一个字符,当第一次掉哟个getc函数时,库通过调用一次read函数填充缓冲区,然后将缓冲区 的第一个字符

返回给应用程序,只要缓冲区还有未读的字节,接下来对getc的调用就能直接从缓冲区得到服务。

1.进程和文件I/O操作

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<wait.h>
#include<errno.h>
#include<signal.h>

#include<sys/types.h>
#include<fcntl.h>
#include<sys/stat.h>
//open write read lseek close 函数所在的头文件
pid_t Fork(void)
{
    pid_t pid;
    if((pid=fork())<0)
    {
        perror("Fork error");
    }
    return pid;
}
int main()
{
    int fd;
    char c;
    fd=open("/home/yy/foobar.txt",O_RDONLY,0);
    if(Fork()==0)
    {
        //子进程会继承父进程的描述符表,以及所有进程共享的同一个打开的文件夹
        read(fd,&c,1);
        //读文件一个第一个字节
        exit(0);
    }
    wait(NULL);
    //再次读的时候文件位置会+1
    read(fd,&c,1);
    printf("c=%c\n",c);
    //输出第二个字符
    
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值