Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1788616
  • 博文数量: 335
  • 博客积分: 4690
  • 博客等级: 上校
  • 技术积分: 4341
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-08 21:38
个人简介

无聊之人--除了技术,还是技术,你懂得

文章分类

全部博文(335)

文章存档

2016年(29)

2015年(18)

2014年(7)

2013年(86)

2012年(90)

2011年(105)

分类: C/C++

2011-12-29 18:46:10


通过标准输入,获取一个命令,然后fork一个进程执行,
execlp 函数使用的参数最后一个字符为NULL,需要注意
然后通过waitpid来获取 子进程的返回状态。

  1. #include "apue.h"
  2. #include <sys/wait.h>

  3. int main(void){
  4.     char buf[MAXLINE]; /*from aput definition */
  5.     pid_t pid;
  6.     int status;
  7.     
  8.     printf("%% "); /* printf prompt (pintf require %% to print % */
  9.     while( fgets(buf,MAXLINE,stdin) != NULL )
  10. {
  11.     if (buf[strlen(buf)-1] == '\n' )
  12.         buf[strlen(buf)-1] = 0; /* replace newline with NULL */
  13.     if ((pid = fork()) < 0) {
  14.         err_sys("fork error ");
  15.     }
  16.     else if( pid == 0 ) {
  17.         execlp(buf,buf,(char *) 0);
  18.         err_ret("couldn't execute :%s",buf);
  19.         exit(12);
  20.     }
  21.     /* parent */
  22.     if ( (pid = waitpid(pid,&status,0)) < 0)
  23.         err_sys("waitpit error ");
  24.     printf("%% ");
  25.     }
  26.     exit(0);
  27. }

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