现在的位置: 首页 > 综合 > 正文

old《APUE 2e》学习笔记 第八章 进程控制

2014年01月31日 ⁄ 综合 ⁄ 共 1258字 ⁄ 字号 评论关闭

 

第八章 进程控制

8.1 引言

 

8.2 进程标识符

1. 函数原型:

    pid_t getpid(void);     //返回调用进程的进程ID

    pid_t getppid(void);    //返回进程的父进程ID

    uid_t getuid(void);     //返回调用进程的实际用户ID

    uid_t geteuid(void);   //返回调用进程的有效用户ID

    gid_t getgid(void);     //返回调用进程的实际组ID

    gid_t getegid(void);   //返回调用进程的有效组ID

    头文件:unistd.h

 

8.3 fork函数

1. 函数原型:

    pid fork(void);

    头文件:unistd.h

    返回值:子进程中返回0,父进程中返回子进程ID,出错返回-1。

    函数功能:创建一个新进程。

 

2.示例:

   ************************ 例 8-1 ****************************

   //使用fork函数创建子进程

   #include <stdio.h>
   #include <unistd.h>
   int glob =6;
   int main()
  {
         int var;
         pid_t pid;
         var=88;
         if((pid=fork())<0)
        {
              printf("fork error/n");
        }
         else if(pid==0)
        {
              glob++;
              var++;
              printf("child :");
        }
        else
       {
              sleep(2);
              printf("parent :");
        }
        printf("pid=%d,glob=%d,var=%d/n",getpid(),glob,var);
        return 0;
   }

   运行结果:

   root@BDAMA:~/study# ./173
   child :pid=11929,glob=7,var=89
   parent :pid=11928,glob=6,var=88

*******************************************************

 

8.4 vfork函数

1.  vfork函数用于创建一个新进程,而该新进程的目的是exec一个新程序。

2. vfork函数与fork函数的区别:

          都一个样创建子进程,但是vfork并不将父进程的地址空间完全复制到子进程中,相反,在子进程调用exec或exit之前,它在父进程

    空间运行。还有,vfork保证子进程运行,在它调用exec或exit之后父进程才能被调度运行。

 

抱歉!评论已关闭.