使用c语言更改终端目录

时间:2014-11-04 07:42:42

标签: c linux terminal

我正在尝试使用c语言更改linux终端的目录。问题是我正在使用线程。我曾尝试使用chdir()但它不起作用,是的chdir()也是一个过程函数。  实际上我想要实现的是,我正在尝试制作一个编译Linux内核的多线程程序,如果没有指定目录就不可能(我试过这样做而没有指定目录但是失败了:))

任何人都可以帮我解决这个问题吗?

提前致谢:)

2 个答案:

答案 0 :(得分:4)

你不能!没有进程可以更改另一个进程的工作目录。一个进程只能更改自己的WD。当您启动类似C程序的外部命令时,将启动一个新进程。 shell的cd命令是内部命令。

答案 1 :(得分:0)

目前还不是很清楚你想要实现的目标。看来你想以某种方式使用C程序模拟脚本(或make工具)的行为,也就是说你编写的C程序启动新进程(使用system或者forkexec*的组合。如果是这种情况,那么您真正想要的是修改这些进程的环境变量,以便找到所需的文件。分叉进程将继承其父进程的环境,因此您只需使用getenvputenvsetenvunsetenv来检索和设置所需的环境变量添加,更新或删除;或者您可以使用特定的execveexecvpe来准确指定新程序可用的环境。

的引用: