- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LINUX进程与进程管理(1) 程序和进程区别 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。而进程就是运行中的程序。简单的说,进程是操作系统中正在运行的任务,而程序是指存储在磁盘上包含有可执行机器代码的指今的文件。程序员常常把源代码称为程序。 一个运行着的程序,可能有多个进程。 例如一个网络服务器,当管理员启动服务后,可能会有好多人来访问,就是说许多用户来同时请求httpd服务,服务器将会创建有多个httpd进程来对其进行服务。 进程的分类 1、交互进程 2、批处理进程 3、守护进程 虚拟内存 我们在安装Linux的时候,需要建立一个交换分区,该分区实际上被用作内存的扩展。系统把暂时不会用到的数据到交分区中,在需要的时候在把磁盘中内容读回内存。这样可以内存空间不足的问题。而这段扩展的内存被称为虚拟内存。 进程内存结构 在32位系统中,4GB的进程地址空间被分为用户空间和内核空间两个部分。用户空间占0~3GB,内核空间范围是3GB~4GB,每个进程都运行在自己的内存空间中,进程内存结构分为三个不同的数据段。 1、代码段 2、数据段 3、堆栈段 内存结构图 进程标识 进程标识 LINUX中使用进程ID来标识一个进程,每个进程都有自己独一无二的ID,在LINUX中除了init进程外,都可能使用kill命令杀死该进程。当系统为一个新进程分配ID达到系统最大值时,系统会重新使用最小且当前没有被使用的PID号。 获取进程ID号函数 在程序中可以使用getpid和getppid函数获得进程ID Pid_t getpid(void) Pid_t getppid(void) 这两个函数成功返回进程PID和PPID,失败返-1。 实例 int main(int argc,char *argv[]) { printf(the current programs pid is %d\n,getpid()); //引用函数 return 0; } 进程组号(PGID) 在 Linux 系统中,每个用户都拥有用户号(UID)和用户组号(GUID),和用户管理一样,进程也拥有自己的进程号(PID)和进程组号(PGID)。当进程生成子进程时,操作系统会自动创建一个进程组。初始的父进程即为主进程,其 PID 和所在的进程组号(PGID)一致,因此,主进程创建的所有进程拥有相同的进程组号(PGID)。 获取进程组号 extern __pid_t getpgid (__pid_t __pid) 函数参数 pid 为要获得进程组号的进程号, 如果执行成功将返回当前进程的进程组号(PGID), 如果执行失败则返回-1, 实例 int main(int argc,char *argv[]) { int i; printf(“\t pid\t ppid \t pgid\n”);//提示信息 printf(“parent\t%d\t%d\t%d\n”,getpid(),getppid(),getpgid(0));//当前进程信息 for(i=0;iif(fork()==0) printf(“child\t%d\t%d\t%d\n”,getpid(),getppid(), getpgid(0)); //子进程信息 return 0; } [root@localhost reer]# gcc -o getpgid_example getpgid_example.c[root@localhost reer]# ./getpgid_example //执行 pid ppid pgid parent 4848 4705 4848 //主进程,pid=pgid,父进程为当前 shell child 4849 4848 4848 //子进程,pid 依次增加,pgid=ppid父进程 ID child 4850 4849 4848 //子进程,pid 依次增加,pgid=ppid父进程 ID 进程用户标识 真实用户标识 当root用户创建新用户时,会给每个用户分配一个用户ID(UID)。可以在/etc/passwd中查用户UID信息。例如: [root@localhost ~]# ls -l /etc/passwd -rw-r--r-- 1 root root 1582 Mar 19 06:37 /etc/passwd 文件的创建者为 root,即真实 ID 为 root UID用于表示进程的创建者,只有进程的创建者和root用户才有权限对进程进行操作。 获取真实用户号(UID) extern __uid_t getuid (void) 此函数无参数
文档评论(0)