Linux中主函数的参数和缓冲区的理解

Linux中的主函数如下所示:

int main(int argc,char *argv[ ],char *envp[ ]);

argc:是传递的参数列表中参数的个数。

argv[ ]:是传递的参数列表。

envp[ ]:是环境变量。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc,char *argv[],char *envp[])
{
	int i = 0;
	for(; i < argc; ++i)
	{
		printf("%s\n",argv[i]);
	}
	exit(0);
}

主函数默认接收一个参数,就是执行的命令。 

缓冲区的理解:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
printf("Hello");
sleep(5);
printf("Word!\n");
return 0;
}

将上面这个代码执行之后,并不是打印出“Hello”,睡眠5秒钟后,再打印“World!”。而是先将“Hello”写到输出缓冲区中,睡眠5秒钟后,再将“world”写到输出缓冲区中进而显示到界面上。

        缓冲区又称为缓存,它是内存空间的一部分,也就是说,在内存空间中预留了一定的存储空间,用来缓冲输入或输出的数据,这部分预留的空间就被称为缓冲区。
        为什么引入缓冲区?
        比如我们在磁盘读取数据的时候,先把数据放在缓冲区中,计算机再直接从缓冲区读取数据,等缓冲区中数据取完后再去磁盘读取,这样就可以大大减少对于磁盘的读写次数,再加上计算机对缓冲区的操作远远快于对磁盘的操作,所以应用缓冲区可以大大提高计算机的运行速度。
        缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。

输出缓冲区刷新的条件:

 

  • 1.程序结束;

  • 2.遇到“\n”;

  • 3.缓冲区满(默认1024字节);

  • 4.主动刷新 fflush(stdout);

  • exit()和_exit()的区别:


  • 由图中我们可以看出:

  • _exit()函数的作用:直接使进程终止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;
    exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,就是图中的"清理I/O缓冲"一项。

  •  

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值