我正在学习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);
}