【发布时间】:2018-04-03 07:25:41
【问题描述】:
我正在尝试制作一个简单的 shell,运行来自 PATH 的任何命令,比如说 ls 或 pwd du gedit 等。我在执行 exec 时遇到了问题。我要求如果我进入空间没有任何反应,并且如果我键入 exit,它就会终止。任何帮助表示赞赏
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <string.h>
#define BUFFER 1024
int main() {
char line[BUFFER];
char* args[100];
char* path = "";
char program[20];
while(1){
printf("$ ");
if(!fgets(line, BUFFER, stdin))
break;
size_t length = strlen(line);
if (line[length - 1] == '\n')
line[length - 1] = '\0';
if(strcmp(line, "exit")==0) break;
strcpy(program,path);
strcat(program,line);
int pid= fork(); //fork child
if(pid==0){ //Child
execlp(program,line,(char *)NULL);
}else{ //Parent
wait(NULL);
}
}
}
【问题讨论】:
标签: c shell fork exec implementation