c - 将 Fork 用于命令行参数

标签 c linux process fork

我正在尝试执行命令“ls -l”,但我不确定如何处理它。

这是我试过的:

int main(void) {
    char * input;
    char * args[2];
    char buff[100];

    input = malloc(sizeof(buff));

while(fgets(input,sizeof(input),stdin) != NULL) {

    printf("Enter a command\n");

    if(strcmp(input,"ls -l\n") ==0) {
        pid_t childPid;

        childPid = fork();

        if(childPid == 0) {
            args[0] = "/bin/ls -l";
            args[1] = NULL;

            execv(args[0],args);
    }

}

}

free(input);
}

但是,该命令在这里似乎不起作用。如果我只是简单地使用“ls”但我想使用“ls -l”它会起作用我是否必须传递另一个参数才能让它起作用?

最佳答案

当您调用任何 exec() 变体时,您必须分别传递每个参数,如

args[0] = "/bin/ls";
args[1] = "-l";
args[2] = NULL;

关于c - 将 Fork 用于命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35261054/

相关文章:

c - 字符串与宏的连接

r - 如何防止 packrat 在 docker 中的系统库中安装软件包?

c# - 服务器通知客户端它已初始化的最佳方式

bash - 等待进程完成

c# - 从系统托盘恢复应用程序

使用 C 计算行数

c - 我的堆栈实现中的数据泄漏

java - 以增量方式生成随机数

linux - pam_cracklib 没有看到旧密码

c - UTF-8 和 ISO8859-1 文件