当前位置: 首页 > 面试题库 >

使用exec()系列运行“ cd”命令

梁渊
2023-03-14
问题内容

我知道这cd是内置的shell,我可以使用运行它system()

但这有可能cdexec()家人来执行命令execvp()吗?

编辑:我只是注意到这system("cd")也是没有意义的。感谢大家的帮助。


问题答案:

exec加载 可执行文件 并用它替换当前程序映像。正如您正确指出的那样,cd不是
可执行文件,而是内置的shell。因此,您要运行的可执行文件是外壳本身。当然,system()这对您有帮助,但是如果您想对其进行明确说明,则可以使用exec

execl("/bin/sh", "-c", "cd", (const char *)0);

由于这 将替换 您当前的过程映像,因此您应该在执行fork()新过程后执行此操作。

但是,整个过程绝对无效。如果要在当前进程中更改目录,请使用chdir()



 类似资料:
  • 我正在尝试使用sqlite3命令,按照本SO答案给出的方式执行https://stackoverflow.com/a/25684912/426853. 以下操作始终在命令行中起作用: 我将其编码为Go,如下所示: 我有一个测试文件,像这样调用它: 测试报告了来自sqlite3的语法错误。 我怀疑问题出在将参数传递给shell,问题在于调用。我试着把它改成 但结果是一样的。我还尝试将放在命令前面,即

  • 问题内容: 我创建了一个独立的Java应用程序,试图在Ubuntu 10.04终端中使用“ cd”命令更改目录。我使用了以下代码。 但是上面的代码给出了以下错误 谁能告诉我如何实施? 问题答案: 没有称为的可执行文件,因为它 不能 在单独的进程中实现。 问题在于,每个进程都有自己的当前工作目录,将其实现为一个单独的进程只会更改 该 进程的当前工作目录。 在Java程序中,您 不能 更改当前的工作目

  • 我需要用docker exec运行2个命令。我正在从docker容器中复制一个文件,不想处理凭据来使用像ssh这样的东西。此命令复制一个文件: 但它会创建一个子目录var/log,我想避免这种情况,所以如果我可以在docker容器中执行这些操作,我应该很好: 如何让docker exec运行2个命令?

  • 我正在处理我的一个项目。我正在windows机器上使用XAMPP开发该项目。这就是我面临的问题。我需要在服务器上执行shell脚本,并在网页上显示结果。问题是,大多数脚本都按预期运行,但我无法获得以下命令的输出:, ls, cat, pwd 因为这些命令返回给我一个空白数组。 我找不到确切的问题。

  • 问题内容: 我正在尝试生成一个执行系统命令的进程,而我自己的程序仍然继续运行,并且两个进程将并行运行。我在linux上工作。 我在网上查了一下,听起来应该使用exec()系列。但这并不完全符合我的预期。例如,在下面的代码中,我只看到“ before”被打印,而没有看到“ done”。 我很好奇我是否在撒东西? [更新] 谢谢你们的评论。现在我的程序看起来像这样。除了最后,一切正常,我必须按Ente

  • 我尝试在php中运行curl命令使用exec方法,它在我的Linux服务器中运行良好,但在我的Windows机器中不工作,我也检查了我的PHP配置文件,在那里启用了curl。它不起作用的问题是什么? 我的命令是(一个用于Linux的命令,这个命令在那里成功运行)“curl-u admin:geoserver-XPUT-H”Content type:image/tiff”--data binary@