gpt4 book ai didi

c - unix "clear"未设置 TERM 环境变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:41 25 4
gpt4 key购买 nike

我正在制作自己的 shell 并设置了 fork/exec 东西来执行程序。对于没有“/”的命令,我在 PATH 环境中搜索包含可执行文件的目录。但是,当我尝试在我的 shell 中使用 clear 时,告诉我未设置 TERM 环境变量。我想知道它是否与此有关:

execve(args[0], args, environ);

环境=

char* environ[] = {NULL};

有什么我需要放在那里的吗?宁愿不使用 execvp。感谢任何帮助

最佳答案

shell 应该为子进程提供自己的环境变量。事实上,几乎所有生成子进程的进程都应该这样做。通常你会为此使用 execv(注意缺少 e),它不会将环境作为参数。

shell 也是一种特殊情况,因为它是可以在将环境传递给其子进程之前合法地修改环境的进程之一。这意味着您可能最终需要 execve,但您不能简单地在那里传递固定数组。您需要管理要传递给您的 child 的环境,在 shell 启动时加载您自己的环境,在每个环境修改命令期间修改它,并将其作为 environ 传递。

关于c - unix "clear"未设置 TERM 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43153395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com