1·printf 缓冲区
- 如果缓冲区满了-那么就直接输出
- 如果缓冲区未满-用户强制刷新会输出
- 程序结束会输出
举个例子我们来看下
# include <stdio.h>
# include<stdlib.h>
# include <unistd.h>
int main(){
printf("hello\n");
sleep(5);
exit(0);
}
# include <stdio.h>
# include<stdlib.h>
# include <unistd.h>
int main(){
printf("hello");
sleep(5);
exit(0);
}
通过这两组代码,我们需要自己动手尝试运行一下会发现–
- 第一组代码:先打印 hello 再休眠5秒
- 第二组代码:先休眠5秒再答应hello
为什么会出现以上的不同呢?
其原因就是缓冲区,再第一个代码中,我们加有 \n 进行对应的换行,强制对缓冲区进行了刷新,而第2个程序没有对缓冲区进行刷新所以是等待了5秒之后,遇到程序结束,那将对应的内容打印到屏幕上
2·主函数 3个参数
#include <iostream>
using namespace std;
//参数个数 参数内容 环境变量
int main(int argc ,char *argv[],char* envp[]){
int i=0;
cout<<argc<<endl;
for(;i<argc;i++){
cout<<i<<" " <<argv[i]<<endl;
}
for(i=0;envp[i]!=NULL;i++){
cout<<i<<" "<<envp[i]<<endl;
}
exit(0);
}
3·复制进程Fork
什么是进程:
一个其中运行着多个线程的地址空间和这些线程所需要的系统资源
简单点来说“就是每一个运行着的程序就是一个进程”
怎么查看进程
ps
进程怎么管理:
通过进程表来进行管理
进程表就