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?
只需cd
在您的system
通话中执行:
system("cd wherever; command");
整个字符串被传递给sh(1)
,所以你可以在那里做任何普通的 shell 事情。由于它位于子外壳中,因此不会更改程序的工作目录。
在 Linux 和 Posix 系统上,该函数在fork(2)、execve(2)、waitpid(2)等系统调用system(3)
之上实现。您可以使用chdir(2)系统调用来更改当前目录。您可以在更改它之前使用getcwd(2)来检索(和记忆)它。(你也可以调用and before ,然后用另一个来恢复原来的当前目录)。getcwd
chdir
system
chdir
我建议阅读像Advanced Linux Programming和Advanced Unix Programming这样的好书,它们有好几章来回答你的问题。
不要指望论坛会向您解释这一切。看书。
当程序执行 system(..) 时,它将位于更改后的目录中。在 system(...) 之后,它将位于更改后的目录中。当程序退出时,它将在原始目录中。