c - 执行与我的 C 程序不同的程序

标签 c shell execution

作为一种爱好,我正在 Linux 中编写一个基本的 shell,我想开始处理程序执行,但不知道如何执行此操作。我见过 execp() 及其各种 sibling ,但显然这会强制内核放弃当前正在运行的进程(在本例中是我的 shell),并继续执行新进程。

所以基本上我需要的是一个函数,我可以用它来调用命令,例如 lscd 让它执行,然后返回到我的 shell。

感谢所有帮助。

最佳答案

ouah 的答案本质上是正确的,但它不适用于 cd。您的 shell 需要将其实现为内置命令(即 shell 需要包含 cd 的代码。

原因是 fork 首先创建当前进程的新副本(在本例中为 shell 的运行实例)。然后 exec 用您想要运行的可执行文件覆盖新进程。命令完成后,新进程将终止并消失。如果您将其用于cd,它将更改新进程的工作目录,但保持旧进程(shell)的工作目录完全不变。

关于c - 执行与我的 C 程序不同的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794346/

相关文章:

c - 当第二个子进程关闭读取管道末尾时杀死第一个子进程

bash - 使用 `find` 查找 pom.xml 文件并执行 Maven 构建,忽略嵌套的 POM

java - 如何在新进程中执行Jar文件并关闭原来的Jar?

Java的Process.exec,有没有更好的处理方法?

c - c语言中的右移。

c - 在反转句子中的每个单词时如何考虑空格?

c - 括号内的缩进而不是 emacs 中的右括号旁边

c++ - 是否存在 valgrind 不会报告现有泄漏/错误的情况

bash - 使用 GNU find 只显示叶目录

c# - 如何下载并运行.exe文件c#