通过标准输入,获取一个命令,然后fork一个进程执行,
execlp 函数使用的参数最后一个字符为NULL,需要注意
然后通过waitpid来获取 子进程的返回状态。
- #include "apue.h"
-
#include <sys/wait.h>
-
-
int main(void){
-
char buf[MAXLINE]; /*from aput definition */
-
pid_t pid;
-
int status;
-
-
printf("%% "); /* printf prompt (pintf require %% to print % */
-
while( fgets(buf,MAXLINE,stdin) != NULL )
-
{
-
if (buf[strlen(buf)-1] == '\n' )
-
buf[strlen(buf)-1] = 0; /* replace newline with NULL */
-
if ((pid = fork()) < 0) {
-
err_sys("fork error ");
-
}
-
else if( pid == 0 ) {
-
execlp(buf,buf,(char *) 0);
-
err_ret("couldn't execute :%s",buf);
-
exit(12);
-
}
-
/* parent */
-
if ( (pid = waitpid(pid,&status,0)) < 0)
-
err_sys("waitpit error ");
-
printf("%% ");
-
}
-
exit(0);
-
}
阅读(1352) | 评论(0) | 转发(0) |