快速业务通道

LINUX进程控制(1)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-25

  1. Linux进程概述

  进程是程序的执行实例,它是Linux的基本调度单位.一个进程由如下元素组成:

  程序的当前上下文,即程序的当前执行状态;

  程序的当前执行目录

  程序访问的文件和目录

  程序的访问权限,比如它的文件模式和所有权

  内存和其他分配给进程的系统资源

  内核使用进程来控制对CPU和其他系统资源的访问,并且使用进程来决定在CPU上运行哪个程序,运行多久以及采用什么特性运行它.内核的调度器负责在所有的进程间分配CPU执行时间,称为时间片(time slice),它轮流在每个进程分得的时间片用完后从进程那里抢回控制权.

  1.1. 进程标1.2. 识

  OS会为每个进程分配一个唯一的整型ID,做为进程的标识号(pid).进程除了自身的ID外,还有父进程ID(ppid),所有进程的祖先进程是同一个进程,它叫做init进程,ID为1,init进程是内核自举后的一个启动的进程.init进程负责引导系统、启动守护(后台)进程并且运行必要的程序.

  进程的pid和ppid可以分别通过函数getpid()和getppid()获得.

  示例:

  #include <stdio.h>

  #include <stdlib.h>

  #include <unistd.h>

  int main()

  {

  printf("pid:%d ppid:%d\n",getpid(),getppid());

  return 0;

  }

  1.3. 进程的用户ID与组ID(进程的运行身份)

  进程在运行过程中,具有一类似于用户的身份,以便进行进程的权限控制,缺省情况下,哪个登录用户运行程序,该程序进程就具有该用户的身份.例如,假设当前登录用户为gotter,他运行了ls程序,则ls在运行过程中就具有gotter的身份,该ls进程的用户ID和组ID分别为gotter和gotter所属的组.这类型的ID叫做进程的真实用户ID和真实组ID.真实用户ID和真实组ID可以通过函数getuid()和getgid()获得.

  与真实ID对应,进程还具有有效用户ID和有效组ID的属性,内核对进程的访问权限检查时,它检查的是进程的有效用户ID和有效组ID,而不是真实用户ID和真实组ID.缺省情况下,用户的(有效用户ID和有效组ID)与(真实用户ID和真实组ID)是相同的.有效用户id和有效组id通过函数geteuid()和getegid()获得. 拥有帝国一切,皆有可能。欢迎访问phome.net

  示例

  #include <stdio.h>

  #include <stdlib.h>

  #include <unistd.h>

  int main()

  {

  printf("uid:%d gid:%d euid:%d egid:%d\n",

  getuid(),getgid(),geteuid(),getegid());

  return 0;

  }

  开始时登录用户为ghaha(uid为500):

  shell>id

  uid=500(ghaha) gid=500(ghaha) groups=500(ghaha)

  编译生成可执行文件a.out,程序文件的属性可能为:

  -rwxrwxr-x 1 ghaha ghaha 12132 Oct 7 09:26 a.out

  执行结果可能为:

  shell>a.out

  uid:500 gid:500 euid:500 egid:500

  现在将a.out的所有者可执行属性改为s

  shell>chmod u s a.out

  shell>ll

  -rwsrwxr-x 1 ghaha ghaha 12132 Oct 7 09:26 a.out

  此时改另外一个用户gotter登录并运行程序a.out

  shell>id

  uid=502(gotter) gid=502(gotter) groups=502(gotter)

  shell>a.out

  uid:502 gid:502 euid:500 egid:502

  可以看到,进程的有效用户身份变为了ghaha,而不是gotter了,这是文件a.out的访问权限的所有者可执行为设置了s的属性,设置了改属性以后,用户运行a.out时,a.out进程的有效用户身份将不再是运行a.out的用户,而是a.out文件的所有者.

  s权限最常见的例子是

  /usr/bin/passwd程序,它的权限位为

  shell>ll /usr/bin/passwd

  -r-s--x--x 1 root root

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号