免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1780 | 回复: 0
打印 上一主题 下一主题

3--程序和进程(UNIX) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-11 17:42 |只看该作者 |倒序浏览
3.1 程序
   程序(program)是存放在磁盘文件中的可执行文件。使用6个e x e c函数中的一个由内核将程序读入存储器,并使其执行。
3.2 进程和进程I D
   程序的执行实例被称为进程( process).每个UNIX进程都一定有一个唯一的数字标识符,称为进程ID(process ID)。进程I D总是一非负整数。
   调用函数getpid得到其进程ID。
3.3 进程控制
    有三个用于进程控制的主要函数: fork、exec和waitpid.
    例:
     #include
     #include
     #define MAXLINE 1024;
     int main(void)
     {
         char buf[MAXLINE];
         pid_t pid;
         int status;

         printf(%% ");
         while(fgets(buf,MAXLINE,stdin)!=NULL)
         {
             buf[strlen(buf)-1]=0;
             if( (pid=fork())
             {
                 printf("fork error");
                 exit(-1);
              }
              else if(pid == 0 )
              {
                  execlp(buf,buf,(char *)0);
                   exit(127);
              }
               if( (pid = waitpid(pid,&status,0))
               {
                    printf("waitpid err\n");
                    exit(-1);
                }
                printf("%% ");
           }
           exit(0);
      }
   调用fork创建一个新进程。新进程是调用进程的复制品,故称调用进程为父进程,新创建的进程为子进程。fork对父进程返回新子进程的非负进程ID,对子进程则返回0。因为fork创建一新进程,所以说它被调用一次(由父进程),但返回两次(在父进程中和在子进程中)。
   在子进程中,调用execlp以执行从标准输入读入的命令。这就用新的程序文件替换了子进程。fork和跟随其后的exec的组合是某些操作系统所称的产生一个新进程。在UNIX中,这两个部分分成两个函数。
   子进程调用execlp执行新程序文件,而父进程希望等待子进程终止,这一要求由调用waitpid实现,其参数指定要等待的进程(在这里, pid参数是子进程ID )。waitpid函数也返回子进程的终止状态( status变量)。





本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/34065/showart_275859.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP