首页 > 解决方案 > 我需要从用户那里获取参数,而不是在命令中硬编码以使用 fork() 同时执行

问题描述

我在下面创建了一个简单的代码块,它从父级分叉,并同时执行“ls”和“date”:

int main(int argc, char ** argv){
    cpid1, cpid2;

    switch(cpid1 = fork()){
        case -1:
            perror("fork failed");
            return EXIT_FAILURE;
        case 0:
            printf("First child, pid=%d, executing ls...\n", getpid());
            execl("/bin/ls", "-l", "-a", NULL);
            return EXIT_FAILURE;
    }

    switch(cpid2 = fork()){
        case -1:
            perror("fork failed");
            return EXIT_FAILURE;
        case 0:
            printf("Second child, pid=%d, executing ls...\n", getpid());
            execl("/bin/date", "-l", "-a", NULL);
            return EXIT_FAILURE;
    }
    while(wait(NULL) != -1);
    return EXIT_SUCCESS;
}

但是,我不想每次都运行“ls”和“date”,如 2 个 execl 语句中所示。我希望用户能够输入最多 6 个用逗号分隔的命令。我想我应该做类似 execl("argv[1]", NULL) 的事情,但我束手无策

标签: cforkexec

解决方案


推荐阅读