我正在尝试使用c语言更改linux终端的目录。问题是我正在使用线程。我曾尝试使用chdir()但它不起作用,是的chdir()也是一个过程函数。 实际上我想要实现的是,我正在尝试制作一个编译Linux内核的多线程程序,如果没有指定目录就不可能(我试过这样做而没有指定目录但是失败了:))
任何人都可以帮我解决这个问题吗?
提前致谢:)
答案 0 :(得分:4)
你不能!没有进程可以更改另一个进程的工作目录。一个进程只能更改自己的WD。当您启动类似C程序的外部命令时,将启动一个新进程。
shell的cd
命令是内部命令。
答案 1 :(得分:0)
目前还不是很清楚你想要实现的目标。看来你想以某种方式使用C程序模拟脚本(或make
工具)的行为,也就是说你编写的C程序启动新进程(使用system
或者fork
和exec*
的组合。如果是这种情况,那么您真正想要的是修改这些进程的环境变量,以便找到所需的文件。分叉进程将继承其父进程的环境,因此您只需使用getenv
,putenv
,setenv
和unsetenv
来检索和设置所需的环境变量添加,更新或删除;或者您可以使用特定的execve
,execvpe
来准确指定新程序可用的环境。
的引用: