Linux——主函数及缓冲区(主函数的参数含义、隐藏缓冲区和强制刷新缓冲区)

目录

一、主函数的三个参数

二、缓冲区 

 1.printf隐藏的缓冲区 

 2.演示缓冲区的存在

3.强制刷新缓冲区

一、主函数的三个参数

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

  • argc:主函数的参数个数
  • argv:主函数的参数内容
  • envp:主函数的环境变量
  • envp是由父进程继承过来的参数;

    环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数;

    注意:envp,argv都是以NULL作为结尾的;

代码演示:(可自行演示)

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

二、缓冲区 

 1.printf隐藏的缓冲区 

原理:

 2.演示缓冲区的存在

//演示缓冲区的存在
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main()
{
        printf("hello!");//如果在后面加一个\n printf("hello!\n");
        sleep(3);
        exit(0);
}
//先睡眠3秒,然后刷新缓冲区打印“hello”。
    
printf("hello!");//如果在后面加一个\n printf("hello!\n"); 
//先刷新缓冲区打印出“hello!”,再睡眠3秒

3.强制刷新缓冲区

  •  强制刷新缓冲区的方法:

①遇到\n自动刷新:printf(“hello\n");

②使用fflush刷新屏幕:printf(“hello”);

                                      fflush(stdout);

③_exit与exit

_exit是真正的退出;

exit是先刷新缓冲区,然后调用_exit(真正的退出)。

  • 总结:

printf将内容写入到缓冲区中,缓冲区刷新到界面(屏幕)上的条件是什么?

①缓冲区放满了;

②缓冲区未满,强制刷新缓冲区(1)的前两个方法(①②);

③程序结束时,自动刷新缓冲区:exit方法③。

注意:_exit不会刷新缓冲区的数据而是直接结束进程。

 #include <stdio.h>
 #include <unistd.h>
 #include <stdlib.h>
 int main()
 {
   printf("hello");
   // fflush(stdout);
   sleep(3);
   _exit(0);
}

如有错误,敬请指正。

您的收藏与点赞都是对我最大的鼓励和支持!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sweep-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值