c - 制作我自己的 shell

标签 c bash shell execv

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

首先我创建了一些打印 shell 的函数 例如

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,没有??

您能否提供一些关于如何从现在开始进行操作的提示?

最佳答案

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

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

否则你是对的,你不能在运行时将地址分配给 char* const。这就是 execl 出现的原因 - 它是用于此目的的一个方便的函数。

关于c - 制作我自己的 shell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33123242/

相关文章:

C 调用 chdir 后损坏的双链表

linux - Linux shell IF 子句中的数学表达式

bash - 将查找字数统计结果放入变量中

c - 如何将音频帧从输入 .mp4 传递到 libavcodec 中的输出 .mp4?

C 编程 - 分析一条线

c++ - 告诉 gcc/g++ 编译器删除孤立函数

python - 在databricks初始化脚本中定义环境变量

linux - 如何使用 sed 识别多行中的模式

html - 如何在 HTML 文件中使用 unix 变量

c - 错误 "malloc: *** error for object 0x7b: pointer being freed was not allocated"可能是什么原因