使用ubuntu执行mini shell

时间:2018-01-23 07:21:21

标签: c shell ubuntu process execution

我正在尝试运行以下代码,但它不起作用。我只想在程序的输入名称完成时执行程序。我不知道问题究竟在哪里,请注意代码似乎没问题。也许还有其他重要的事情,我没有注意到......

setbuf(stdout, NULL);
char input[255];
char path[255];
int status;
char *args[2] = {"ls", NULL};             
while(strcmp(input, "end") != 0 ){
    printf("Waiting for input:\n");
    scanf("%s",input);
    strcpy(path, "./");
    strcat(path, input);
    if(strcmp(input, "end") != 0){
        printf("execute %s\n", path);
        int ret = execv(path, args);
        if(ret == -1){
            perror("execve error");
        } 
    }
    else{
        printf("Programm-Ends\n");
    }    
};    
return 0;

1 个答案:

答案 0 :(得分:0)

args的第一个元素应该是正在运行的程序的名称。所以说:

args[0] = path;
在致电execv()之前