如何从特定目录调用system()?

时间:2012-10-19 05:44:15

标签: c linux

我需要我的程序转到某个特定目录然后运行

system( ... );那里让我回到原来的位置。我该怎么办?

4 个答案:

答案 0 :(得分:3)

只需执行cd来电中的system

system("cd wherever; command");

整个字符串传递给sh(1),所以你可以在那里做任何正常的shell事情。由于它位于子shell中,因此程序的工作目录不会更改。

答案 1 :(得分:3)

在Linux和Posix系统上,system(3)函数在system calls fork(2)execve(2)waitpid(2)等{{}}}之上实现。您可以使用chdir(2)系统调用来更改当前目录。在更改之前,您可以使用getcwd(2)检索(并记住)它。 (您也可以在getcwd之前拨打chdirsystem,然后使用另一个chdir恢复原始当前目录。

我建议您阅读一本好书,如Advanced Linux ProgrammingAdvanced Unix Programming,它们有几章可以回答您的问题。

不要指望论坛向您解释这一切。阅读书籍。

答案 2 :(得分:2)

在致电系统之前使用chdir。您甚至可以在chdir之前使用getcwd返回系统之后的目录。

答案 3 :(得分:1)

  1. 使用chdir
  2. 转到特定目录
  3. 运行系统(...)(正如Basile所说,如果系统采用用户定义的变量,请确保对它们进行消毒)
  4. 当程序执行system(..)时,它将在更改的目录中。在系统(...)之后,它将在更改的目录中。程序退出时,它将位于原始目录中。