制作我自己的shell

时间:2015-10-14 10:44:24

标签: c bash shell execv

这是家庭作业,你可以说。这将在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数组,这是我知道怎么做的事情之一,因为所有的变量都必须事先声明,因为它& #39; s const,no ??

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

1 个答案:

答案 0 :(得分:1)

为什么要使用execv? execl 执行相同的操作,并期望一个const char *参数数组。

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

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