Linux C IO编程学习笔记(第一天:标准IO)

首先说一下输入输出的概念,所谓的输入输出就是相对于程序而言的,凡是讲数据输送到程序中的过程就是输入,相反就是输出

然后,在linux中的IO分为两种,一种是文件io:是由内核提供的,比较简洁,低级IO,没有缓存,另一种是标准IO:是由标准C库提供,功能复杂高级IO,有缓存

那么缓存可分为以下几种:
1.行缓冲:系统不多见,多用于跟用户交互,当一行满的时候刷新缓冲,一行以\n结束
2.满缓冲:当满的时候才刷新缓冲

3.无缓冲


linux中对文件的处理都是以文件流形式的:
1.文件流只关心流向,不关心大小,格式

2.系统流:stdin,stdout,stderr

标准IO函数
1.linux系统中的IO函数有两种:文件IO和标准IO,其中文件IO是由kernel提供的,而标准IO则是由C库提供的
2.其中,文件IO没有缓冲,而标准缓冲是有缓冲的,请看代码:

/*************************************************************************
	> File Name: test.c
	> Author: Baniel Gao
	> Mail: createchance@163.com 
	> Blog: blog.csdn.net/createchance 
	> Created Time: Wed 25 Dec 2013 06:56:18 PM CST
 ************************************************************************/
#include <stdio.h>

int main(void)
{
	printf("hello world");
	while(1)
		;

	return 0;
}
那么,这里的hello>/************************************************************************* > File Name: test.c > Author: Baniel Gao > Mail: createchance@163.com > Blog: blog.csdn.net/createchance > Created Time: Wed 25 Dec 2013 06:56:18 PM CST ************************************************************************/ #include <stdio.h> int main(void) { printf("hello world"); fflush(stdout); while(1) ; return 0; }
这样的话,hello world就能显示了,其实我们还可以修改缓冲区的特性。前面说过,缓冲区分为三中,在与用户交流的shell中,他的缓冲是行缓冲,必须等一行的结束也就是\n才能输出,所以可以使用加上\n的方法显示字符串。其实我们可以使用setbuf函数将缓冲区修改为无缓冲:

/*************************************************************************
	> File Name: test.c
	> Author: Baniel Gao
	> Mail: createchance@163.com 
	> Blog: blog.csdn.net/createchance 
	> Created Time: Wed 25 Dec 2013 06:56:18 PM CST
 ************************************************************************/
#include <stdio.h>

int main(void)
{
	printf("hello world");
	setbuf(stdout, NULL);
	while(1)
		;

	return 0;
}

这里的setbuf函数的原型是:

void setbuf(FILE *stream, char *buf);

也就是讲缓冲区重定向为buf指向的区域中,如果我们将这个区域指向为NULL,那么也就是没有缓冲了!!其实也可以使用setvbuf函数,他可以将缓冲区设置为行缓冲,块缓冲,无缓冲,具体的使用方法请MAN


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值