通过fork()和execlp()调用linux命令

时间:2017-03-28 23:19:33

标签: c linux

我正在学习ipc并希望为管道命令执行制作mini-shell 我试图通过使用这个c代码运行linux命令,现在我可以运行像ls,date,pwd这样的命令但不喜欢ls -ltr或cd ..?

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include "apue.h"

int main(void){

char buf[MAXLINE];
pid_t pid;
int status;
printf("%% ");

while(fgets(buf,MAXLINE,stdin) != NULL){

if(buf[strlen(buf)-1] == '\n')
 buf[strlen(buf)-1] = 0 ;

if((pid = fork()) < 0 ){
   printf("fork error");
}else if(pid == 0){
  execlp(buf , buf, (char * ) 0);
  printf("coulden't exceute : %s",buf);
  exit(127);

  }   
   if((pid = waitpid(pid,&status,0)) < 0)
   printf("waitpid error"); 
   printf("%% ");

  }
    exit(0);
  }

0 个答案:

没有答案