用户名: 密码: 忘记密码? 注册

linux进程开发之(一):进程的标识

作者:  时间: 2010-10-25
下面的这个函数就容易说明在linux中是如何标识进程的
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
 printf("The PID of this process is %d\n",getpid());//打印子进程的PID
 printf("The PPID of this process is %d\n",getppid());//打印父进程PPID
}
/*----------------------------------------------------------
1.进程的定义
进程是一个程序的一次执行的过程。它和 程序是有本质区别的,程序是静态的的,
它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念;而进程是一个动
态的概念,它是程序执行的过程,包括了动态创建,调度和消亡的整个过程。它是
程序执行和资源管理的最小单位。因此对系统而言,当用户在系统中键入命令执行
一个程序的时候,它将启动一个进程。
2.进程是linux系统的基本调度单位,它是通过进程控制块来描述的。进程控制块
包含了进程的描述信息,控制信息以及资源信息,它是进程的一个静态描述。
3.进程的标识
在linux中最主要的进程标识有进程号(PID,process idenity number)和它的父进程
号(PPID,parent process ID).其中PID惟一地标识一个进程。PID和PPID都是非零的
正整数。
4.在linux中获得当前进程的PID和PPID的系统调用函数是getpid和getppid,通常程序
获得当前进程的PID和PPID可以将其写入日志文件以做备份。
5.getpid(取得进程识别码)
1)需头文件:#include<unistd.h>
2)函数原型:pid_t getpid(void)
3)函数说明:getpid()用来取得目前进程的进程识别码,许多程序利用取到的值来
建立临时文件,以避免临时文件相同带来的问题。
4)返回值 目前进程的进程识别码
6.getppid(取得父进程的进程识别码)
1)需头文件: #include<unistd.h>
2)函数原型:pid_t getppid(void)
3)函数说明:getppid()用来取得目前进程的父进程识别码
4)返回值:目前进程的父进程识别码
7.进程的三态:
.执行态:该进程正在运行,即进程正在占用CPU。
.就绪态:进程已经具备执行的一切条件,正在等待分配CPU的处理时间片。
.等待态:进程不能使用CPU,若等待时间发生则将其唤醒。
8.linux下的进程结构
linux中的进程包含3个段:"数据段","代码段","堆栈段"。
9.在linux系统中,进程的执行模式划分为用户模式和内核模式。
如果当前运行的是用户程序,应用程序或者内核之外的系统程序,那么对于进程就在
用户模式下;如果在用户执行过程中出现系统调用或者发生中断事件,那么就要运行
操作系统(即核心)程序,进程模式就变成了内核模式。
用户进程既可以在用户模式下运行,也可以在内核模式下运行。
---------------------------------------------------------------*/