目录
一、主函数的三个参数
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);
}
如有错误,敬请指正。
您的收藏与点赞都是对我最大的鼓励和支持!