【Linux】主函数的参数和输出缓冲区

主函数(main函数)的参数:

int main(int argc,char *argv[],char *envp[])​​​​​​​​​​​​​​;
  • argv: (char*)[ ]指针数据类型,传递给main方法的参数列表
  • argc:  int类型,传递给main方法的参数列表中的参数个数;相当于argv是一个数组,argc把数组的长度传进去
  • envp:(char*)[ ]指针数组类型,传递的环境变量列表

打印主函数的参数:

打印的结果: 

注意:只要用户执行程序,main方法默认至少接受一个参数,此参数就是执行程序的命令

main方法传参示例:

“hello world ”是一个字符串,所以算是一个参数

打印环境变量:环境变量一般不用传递,是继承和父进程来的

 输出缓冲区:

这个程序输出的结果是:先睡眠了五秒,再输出helloworld。而不是先输出hello,再睡眠五秒,再输出world。

当我们执行这个代码时,它是按照顺序执行,先执行第一句再执行第二句然后执行第三句;但它执行第一句的printf的时候并不是很快将它打印出来,而是将hello写入输出缓冲区(内存上的一块空间);再去执行sleep睡眠5秒钟;然后执行第三句的printf。和第一句一样,将world和\n写入到输出缓冲区;最后打印出helloworld到界面上。


这个程序的输出结果:先睡眠了五秒,再输出helloworld,再睡眠两秒

第二次为什么为在输出helloworld后会再睡眠两秒呢?因为world后面还有一个\n,这也是我们输出缓冲区的条件之一。

将输出缓冲区中的内容刷新到界面是需要一定的条件:

  1. 当输出缓冲区存在“\n”;
  2. 手动刷新  调用fflush(stdout)方法;
  3. 缓冲区满
  4. 进程结束  -exit不管当前缓冲区的状态,有没有数据,会直接结束进程,不会去刷新缓冲区  exit缓冲区有数据会先刷新数据,再结束进程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值