随笔分类 - linux / linux进程
摘要:当创建一个子进程后,该进程会进入就绪状态,再根据系统的调度,获得时间片,就进入运行状态,在运行状态的进程调用return等进程就结束了;如果在运行状态的进程调用read、write等带阻塞的函数,进程就会进入挂起状态。
阅读全文
摘要:exec函数是为了在子进程中执行其他的可执行程序(代码替换) 子进程调用exec函数并不创建新的进程,所以前后进程的ID不会改变,exec函数只是用另一个新程序代替当前进程的正文、数据、堆、栈,exec函数结束后(成功就不返回了,失败会返回-1),exec函数后的代码不会执行 l(list):参数列
阅读全文
摘要:wait()函数:以阻塞的方式等待子进程退出,防止僵尸进程的产生 头文件: #include <sys/types.h> #include <sys/wait.h> pid_t waitpid(pid_t pid, int *wstatus, int options); 原型: pid_t wait
阅读全文
摘要:进程链#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { pid_t pid; int i; //printf("pid = %d\n",getpid()); for(i = 0; i< 5;i
阅读全文
摘要:操作文件内核中的结构变化: 在创建一个子进程时,子进程也会有一个进程表项,子进程进程表项中的文件描述符表是复制的父进程的。
阅读全文
摘要:在fork之前的printf和write函数只会父进程调用一次,子进程不会调用,因为那时子进程还没有创建出来。当fork时,子进程被创建,程序只会往下顺序执行,但是前面父进程分配的数据段、堆、栈(如红框)会被复制一份到子进程 输出如下:
阅读全文
摘要:1. 主进程在fork出一个子进程后,会将自己4G的空间复制一份给子进程(包括代码段、数据段、堆、栈),代码段共享同一物理内存,因为子进程中的代码和父进程中的代码是一样的,只是对pid有一个判断,才会走不同的分支; 输出: 红框中的代码在父进程和子进程都有一份,他们是一样的,只是他们通过判断是父进程
阅读全文
摘要:ps -aux输出的进程信息: 进程的状态: 进程状态的变化关系:
阅读全文
摘要:区别: 全缓存刷新io缓存的条件: 1. 文件写满; 2. 关闭文件; 3. 进程以return、exit终止
阅读全文
摘要:c程序的启动过程(进程的启动过程): 首先,每个c程序都是从主函数开始,但是在主函数调用之前内核会启动一个特殊的例程,叫启动例程,然后这个启动例程会调用main函数 每个进程在终止前都会调用一个终止函数,终止函数的默认动作就是清缓存、释放资源等,当然也可以自己定义终止函数,然后再向内核注册,让进程终
阅读全文
摘要:内核中每个启动的进程都是对task_struct结构体(进程表项、进程控制块pcb process control block)的抽象 内核中进程的结构: 内核中为每个进程维护了一个task_struct的结构体,该结构体就是对进程的抽象,进程的所有状态、信息、策略等都用这个结构体表示。 进程可以操
阅读全文