自己做 shell
Making my own shell
如您所知,这是作业。将在 C 中实现。
首先我创建了一些打印 shell 的函数
e.x.
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 数组,这是我 不知道 知道怎么做的事情之一,因为必须声明所有变量事先因为它是常量,不是吗??
你能提供一些关于如何从现在开始的提示吗?
为什么要使用execv? execl 做同样的事情并需要一个 const char* 参数数组。
int execl(const char *path, const char *arg, ...);
否则你是对的,你不能在运行时将地址分配给char* const。这就是 execl 在这里的原因 - 它是一个方便的函数。
如您所知,这是作业。将在 C 中实现。
首先我创建了一些打印 shell 的函数 e.x.
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 数组,这是我 不知道 知道怎么做的事情之一,因为必须声明所有变量事先因为它是常量,不是吗??
你能提供一些关于如何从现在开始的提示吗?
为什么要使用execv? execl 做同样的事情并需要一个 const char* 参数数组。
int execl(const char *path, const char *arg, ...);
否则你是对的,你不能在运行时将地址分配给char* const。这就是 execl 在这里的原因 - 它是一个方便的函数。