我需要我的程序转到某个特定目录然后运行
system( ... );
那里让我回到原来的位置。我该怎么办?
答案 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
之前拨打chdir
和system
,然后使用另一个chdir
恢复原始当前目录。
我建议您阅读一本好书,如Advanced Linux Programming和Advanced Unix Programming,它们有几章可以回答您的问题。
不要指望论坛向您解释这一切。阅读书籍。
答案 2 :(得分:2)
答案 3 :(得分:1)
当程序执行system(..)时,它将在更改的目录中。在系统(...)之后,它将在更改的目录中。程序退出时,它将位于原始目录中。