Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48521
  • 博文数量: 24
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 62
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-14 21:50
个人简介

只有想不到的,没有做不到的

文章分类
文章存档

2014年(24)

我的朋友

分类: 嵌入式

2014-10-29 19:20:12

进程ID(PID)父进程ID(PPID) 进程用户ID(UID)

#include 

#include  .

#include 

pid_t  getpid(void) 获取本进程ID

pid_t  getppid(void) 获取父进程ID
pid_t  fork(void)       创建进程,fork 奇妙之处在于,调用一次,返回两次,有3种不同的返回值

                 在父进程中返回新建的父进程PID

                 在子进程中返回0

                 出现错误返回负值

          fork的子进程会复制父进程的数据块,共享代码段,父进程和子进程的运行次序不确定,例子

          int  main ()

                  {

                      pid_t   pid;

                      int     count=0;

                     pid=fork();

                     count++;

                     printf(“count=%d\n”,count);

                  }程序执行的结果是1  1        并非1   2

pid_t  vfork () 创建子进程,共享父进程的数据块,子进程先运行,例子

          int  main ()

                  {

                      pid_t   pid;

                      int     count=0;

                     pid=vfork();

                     count++;

                     printf(“count=%d\n”,count);

                  }程序执行的结果是1  2        并非1   1

exec函数族,启动一个新程序,替换原有的进程,进程ID不变,即PID不变

              int   execl(const char *path,const char *arg1,....)

                               path是一个程序的完整路径

                               arg1~argn被执行程序锁需要的命令行参数,包含程序名,以空指针NULL结束

              int   execlp(const char *path,const char *arg1,....)

                               path程序名,不包含路径,将从path环境变量中查找该程序

                               arg1~argn被执行程序锁需要的命令行参数,包含程序名,以空指针NULL结束

              int   execv(const char *path,char *const  argv[])

                               path是一个程序的完整路径

                               arg[]被执行程序锁需要的命令行参数数组,包含程序名,以空指针NULL结束

              int  system(const char *string)

                               调用fork产生一个子进程,然后由子进程调用“/bin/sh  -c  string ”来执行参数string所代表的命令

pid_t  wait (int *status)阻塞进程,直到某个子进程退出

阅读(1362) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~