Linux基本指令(9)
printf()缓冲区问题?
缓冲区输出情况:
1、当缓冲区满了
2、强制刷新缓冲区
3、程序结束时
(换行会导致缓冲区强制刷新)
exit() <stdlib.h> C标准库
_exit <unistd.h> Unix系统调用
区别:
exit():会先执行用户态的资源清理操作,再调度内核级的进程终止逻辑
1、刷新并关闭标准I/O流
2、清理私有资源
3、调用_exit()触发内核回收
_exit()是系统调用,会跳过所有用户态的清理步骤,直接通知内核终止进程
程序:
是静态的代码和数据,是待执行的指令集合,不占用CPU,内存等资源
进程:
是一种动态执行的过程,操作系统会为程序去分配所需的CPU时间,内存空间等,让程序的指令被CPU逐条运行
fork():复制进程
<unistd.h> pid_t fork(void)
(父进程里返回值是进程号,子进程返回值是零)
返回值:
1、父进程中,返回子进程的PID,用于识别和管理子进程
2、子进程中,返回零
3、出错时,返回-1
僵死进程:
子进程先于父进程结束,父进程没有获取子进程的退出码,子进程就会变成僵死进程
进程三大基本运行状态:
1、就绪态
2、运行态
3、阻塞态