一般网站要多大空间,网站的注册上一步下一步怎么做,全国企业名录,专业微信网站建设价格说明
进程在执行过程中可以创建多个新的进程。创建进程称为“父进程”#xff0c;新的进程称为“子进程”。每个新的进程可以再创建其他进程#xff0c;从而形成进程树。
每个进程都有一个唯一的进程标识符#xff08;process identifier#xff0c;pid#xff09;。在L…说明
进程在执行过程中可以创建多个新的进程。创建进程称为“父进程”新的进程称为“子进程”。每个新的进程可以再创建其他进程从而形成进程树。
每个进程都有一个唯一的进程标识符process identifierpid。在Linux中init进程是所有其他进程的根进程。
在Linux中可以通过系统调用fork()创建新进程新进程的地址空间复制了原来进程的地址空间。父进程和子进程都会继续执行fork()调用之后的指令。
注本文是《操作系统概念第九版》第三章的练习。
创建进程
创建进程的C语言代码示例
#include sys/types.h
#include stdio.h
#include unistd.h
#include sys/wait.hint main(){pid_t pid;pid fork();/* Both parent and child process will continue from here */printf(current pid: %d \n, getpid());if (pid 0){/* error occurred */fprintf(stderr, Fork Failed);return 1;} else if (pid 0) {/* child process */printf(In Child, pid: %d, ppid: %d\n, getpid(), getppid());execlp(/bin/ls, ls, NULL);} else {/* parent process will wait for the child process to complete *//* 如果子进程已经结束了但是其父进程还没有调用wait()这个进程就是僵尸进程 */sleep(20);wait(NULL);printf(In parent, pid: %d, ppid: %d\n, getpid(), getppid());}return 0;
} 编译和执行
编译 gcc -o process process.c执行 ./process执行结果的输出如下
current pid: 198495 #父进程执行的获取到的是父进程的pid
current pid: 198496 #子进程执行的获取到的是子进程的pid
In Child, pid: 198496, ppid: 198495 #在子进程的判断语句中pid为子进程pidppid为父进程的pid
process process.c #在子进程的判断语句中执行execlp(/bin/ls, ls, NULL);的输出。在此之后的20秒子进程执行结束短暂变为僵尸进程
In parent, pid: 198495, ppid: 197721 #在父进程的判断语句中pid为父进程的pidppid为父进程的父进程pid查看进程 ps -ef列出系统中所有当前活动进程的完整信息 ps -l 可以查看进程状态状态列位于列S状态为Z的进程为僵尸进程 pstree 以树形结构展示进程