Chinaunix首页 | 论坛 | 博客
  • 博客访问: 13907
  • 博文数量: 14
  • 博客积分: 410
  • 博客等级: 下士
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-20 10:49
文章分类

全部博文(14)

文章存档

2011年(1)

2010年(13)

我的朋友
最近访客

分类: LINUX

2010-10-18 21:58:46

一,基本概念
1.定义
进程是操作系统资源分配的基本单位,是运行种的程序。
2.进程构成
分为三部分:代码段,数据段,堆栈段。
代码段:存储可执行代码。
数据段:存放全局变量,变量,静态变量
堆:存放动态分配的内存变量
栈:用于函数调用,存放函数参数,内部定义的局部变量。
3.用于进程控制的系统调用
fork,exit,exec,wait,getpid,nice.
二,应用
1.进程创建
  两种方式:系统创建,父进程创建。例如 系统开机启动创建的init进程.
父进程创建有两种方法:fork()和vfork()。

1>fork(),vfork()
  fork创建进程,创建成功会返回两个值,父进程会返回一个数,这个数为子进程的进程ID;子进程返回0,表示进程创建成功。创建失败返回-1.fork()创建之后父子进程谁先运行是系统随机的系统.
  vfork创建进程,子进程共享父进程的地址空间(创建相比fork速率高),创建后先保证子进程先运行,父进程挂起等待。
 
 创建实例:
#include
#include
#include
#include

int main(void)
{
    pid_t pid;
    pid=fork();
    switch(pid)
   {
      case 0:
            printf("child process is running,process,curpid is   %d,parent's ID is %d\n",pid,getpid());
            break;
      case -1:
            perror("process creat error!");
            break;
      default:
            printf("parents process is running,child's ID is %d,parents's ID is %d\n",pid,getppid());
   }

   exit(0);
}
2>.父子进程关系
子进程完全复制父进程的资源。子进程继承父进程的大部分属性。
3>守护进程
  在后台运行的,没有控制终端与之相连的进程。
  创建方法:
  1.创建一个进程并让其后台执行(先fork再exit父进程);
  2.调用 setsid创建一个新对话期,使进程脱离控制终端;
  3.禁止进程重新打开终端(fork进程再exit父进程);
  4.关闭不再需要的文件描述符(for(i=0;i  5.将当前目录切换为根目录(chdir("/"));
  6.将文件创建时使用的屏蔽字置零(umask(0));
  7.处理signal信号(signal(SIGCHLD,SIG_IGN)).

4>进程退出
  正常推出:exit(带参数,先执行一些清除操作,将控制权交还给内核),_exit(立即将控制权交给内核),return(返回至调用函数)
  异常推出:about,收到某个信号。

5>执行新程序
  exec
  调用exec执行另外一个程序
  exec(const char *path,char *const argv[],char *const envp[]);
  例子:
       int main(int argc,char *argv[],char **environ) 
       .....
       exec("program name",argv,environ)
       .....

6>等待程序结束
  wait
  如果子进程先于父进程结束,且父进程没有调用 waitpid或wait函数等待子进程结束,则子进程会变为僵尸进程。

7>获取进程ID
  getpid()                         获取当前进程ID
  getppid()                        获取父进程ID
 
8>设置用户ID和有效用户ID
 setuid和setgid

9>改变进程优先级
 nice
 
阅读(309) | 评论(1) | 转发(0) |
0

上一篇:我的VIM配置

下一篇:romfs文件系统小结<1>

给主人留下些什么吧!~~

chinaunix网友2010-10-19 20:31:06

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com