0

正如你所知道的,这是家庭作业。这将在 C 中实现。

首先,我创建了一些打印 shell ex 的函数

printf("%s@cs345sh:~/%s ", getlogin(), get_working_directory());

之后,我继续用“|”标记输入行 作为分隔符,所以我得到稍后将通过管道传输的命令。

char* instr;
instr = strtok(line, "|");
while (instr != NULL) {
    insert_arguments_list(instr); //This is a singly-linked list that holds the arguments.
    instr = strtok(NULL, "|");
}

所以现在,我必须创建一个 char *const 数组,这是我知道该怎么做的事情之一,因为所有变量都必须事先声明,因为它是 const,不是吗?

你能提供一些关于如何从现在开始进行的提示吗?

4

1 回答 1

1

为什么要使用 execv?execl做同样的事情并需要一个 const char* 参数数组。

int execl(const char *path, const char *arg, ...);

否则你是对的,你不能在运行时将地址分配给 char* const。这就是execl在这里的原因——它是一个方便的功能。

于 2015-10-14T11:24:40.617 回答