第三章:进程一个程序的一份运行中的实例称作一个进程。假如你屏幕上显示了两个终端窗口,你很可能同时将一个终端程序运行了两次——你有两个终端窗口进程。每位窗口可能都运行着一个shell;每位运行中的shell都是一个单独的进程。当你从一个shell上面调用一个程序的时侯,对应的程序在一个新进程中运行;运行结束后shell继续工作。中级程序员常常在一个应用程序中同时启用多个协作的进程以使程序可以并行更多任务、使程序更强壮,或则可以直接借助已有的其它程序本章上将要介绍的各类进程操作函数与其它UNIX操作系统中的进程操作函数十分相像。多数函数都在这个包含文件中申明了原型;检测对应的指南页以确保无误。3.1查看进程即使你只是坐在你的笔记本上面,进程也在笔记本内运行着。每位运行着的程序就会运行着一个或几个进程。让我们从观察这些正在系统中运行的进程开始。3.1.1进程IDLinux系统中的每位进程都由一个独一无二的进程ID(一般也被称为pid)标示。进程ID是一个16位的数字,由Linux在创建新进程的时侯手动依次分配。每位进程都有一个父进程(不仅将在3.4.3节“僵尸进程”中介绍的特殊的init进程)。
为此linux查看进程的线程数,你可以把Linux中的进程结构想像成一个树形结构linux操作系统安装,其中init进程就是树的“根”。父进程ID(ppid)就是当前进程的父进程的ID。当须要从C或C++程序中使用进程ID的时侯,应当仍然使用中定义的pid_t类型。程序可以通过getpid()系统调用获取自身所运行的进程的IDlinux查看进程的线程数linux培训,也可以通过getppid()系统调用获取父进程ID。诸如下边一段程序(代码列表3.1)输出了程序运行时的进程ID和父进程ID。代码列表3.1(print-pid.c)输出进程ID#include#includeintmain(){printf("TheprocesIDis%dn",(int)getpid());printf("TheparentprocessIDis%dn",(int)getppid());return0;}把这个程序运行几次并观察每次的结果,会发觉每次就会输出一个不同的进程ID,由于每次运行这个程序都构建了一个新进程。并且,假如你每次都从同一个shell上面调用,父