重庆网站建设论文,2 如何写一份详细的网站开发方案,金科网站建设,百度这个网站怎么做目录 0x01 linux中特殊的进程
0x02 进程的标识
0x03 创建子进程 0x01 linux中特殊的进程
0号进程#xff1a;idle进程#xff0c;系统启动加载的进程1号进程#xff1a;systemd进程#xff0c;系统初始化#xff0c;是所有进程的祖先进程 init2号进程#xff1a;kthre…目录 0x01 linux中特殊的进程
0x02 进程的标识
0x03 创建子进程 0x01 linux中特殊的进程
0号进程idle进程系统启动加载的进程1号进程systemd进程系统初始化是所有进程的祖先进程 init2号进程kthreadd进程负责内核中所有进程的调度和管理
0x02 进程的标识
每个进程都会有一个非负整数来标识进程pid查看进程的命令 ps -ef | grep yourprocessname 从左到右依次是启动进程的用户 进程的id标识 父进程的id cpu占用率 开始时间 启动设备 运行总时间 启动时执行的命令
# 使用getpid(void)可以获取进程的id
#includecstdio
#includecstdlib
#includecstring
#includeunistd.hint main(){printf(进程的id%d,getpid());printf(进程的父进程id%d,getppid());sleep(10);return 0;
} 0x03 创建子进程
使用fork函数可以创建新的进程在子进程调用fork函数创建进程会返回0在父进程中使用fork函数会返回进程的ID子进程是父进程的副本子进程获得了父进程的数据空间堆和栈的副本不是共享子进程改变数据不会影响父进程变量的数据如果父进程先退出子进程会成为孤儿进程1号进程会管理孤儿进程对子进程的状态进行收集工作如果子进程先退出内核会向父进程发送一个SIGCHLD的信号如果父进程不处理这个信号子进程会成为僵尸进程
#includecstdio
#includecstdlib
#includecstring
#includeunistd.h
#includesys/types.h
#includesys/wait.h#includesignal.hvoid func(int sig){int state;wait(state);
}
int main(){// 1忽略子进程的sigchld// signal(SIGCHLD,SIG_IGN);// 3使用函数处理信号signal(SIGCHLD,func);File* filefpopen(/tmp/tmp.txt,w);fprintf(file,this is a test\nfflush(file);printf(进程的id%d,getpid());sleep(10);printf(进程的id%d,getpid());int pidfork();printf(fork出的id为%d,pid);sleep(1);if(pid0){printf(子进程的id为%d,getpid());printf(子进程的父进程id为%d,getppid//子进程的逻辑代码fprintf(fp,子进程 this is a test\n);}if(pid0){printf(父进程的id为%d,getpid());printf(父进程的父进程id为%d,getppid());//父进程的逻辑代码fprintf(fp, 父进程 this is a test\n);//2 等待子进程退出的代码 使用wait方式阻塞等待子进程退出// int state;// wait(state);}printf(进程的id%d,getpid());sleep(30);printf(进程的id%d,getpid());fclose(file);
}