0

I need my program go to some specific directory then run

system( ... ); there and get me back where I was before. How can I do it?

4

4 回答 4

3

只需cd在您的system通话中执行:

system("cd wherever; command");

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

于 2012-10-19T05:46:52.893 回答
3

在 Linux 和 Posix 系统上,该函数在fork(2)execve(2)waitpid(2)系统调用system(3)之上实现。您可以使用chdir(2)系统调用来更改当前目录。您可以在更改它之前使用getcwd(2)来检索(和记忆)它。(你也可以调用and before ,然后用另一个来恢复原来的当前目录)。getcwdchdirsystemchdir

我建议阅读像Advanced Linux ProgrammingAdvanced Unix Programming这样的好书,它们有好几章来回答你的问题。

不要指望论坛会向您解释这一切。看书。

于 2012-10-19T05:48:08.520 回答
2

在调用系统之前使用chdir 。您甚至可以使用getcwd beforechdir回到 system 之后的目录。

于 2012-10-19T06:02:03.097 回答
1
  1. 使用chdir转到特定目录
  2. 运行 system(...) (正如 Basile 所说,如果系统正在使用用户定义的变量,请确保对其进行清理)

当程序执行 system(..) 时,它将位于更改后的目录中。在 system(...) 之后,它将位于更改后的目录中。当程序退出时,它将在原始目录中。

于 2012-10-19T06:03:20.850 回答