【问题标题】:execution mini shell using ubuntu使用 ubuntu 执行 mini shell
【发布时间】:2018-07-01 22:43:22
【问题描述】:

我正在尝试运行以下代码,但它不起作用。当程序的输入名称完成后,我只想执行一个程序。我不知道问题出在哪里,因为代码看起来还可以。也许还有其他重要的事情,我没有注意到......

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;

【问题讨论】:

标签: c shell ubuntu process execution


【解决方案1】:

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

args[0] = path;

在致电execv()之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2015-02-13
    • 2023-03-18
    • 2013-02-10
    • 2018-10-06
    • 2016-05-01
    • 1970-01-01
    相关资源
    最近更新 更多