如何使用C程序中的exec命令更改目录?
问题描述:
我必须从我的C程序中更改工作目录。为此,我使用了以下命令: execl("/bin/cd","cd","..",(char*)0);
但这个命令是不是改变目录? 这个命令有什么问题,或者有没有其他方法可以从C程序中更改工作目录?如何使用C程序中的exec命令更改目录?
答
要改变你应该使用chdir
当前目录:
int chdir(const char *path);
如果成功则返回0
你不能有以下几个原因使用EXECL:
-
cd
一般贝壳内建命令; - 在大多数系统上
/bin/cd
不存在;在具有它的极少数系统上,它会更改当前目录,然后生成子shell进程; - 当前目录是一个进程的属性:如果您使用
/bin/cd
更改当前目录,则在进程终止后立即丢失目录更改; - 如果您使用
exec
系列的功能,则当前过程映像会被替换为新的过程映像 - 您可以使用system
,但不能解决前面的3个问题。
这不回答这个问题。有些课堂作业有严格的规定,你需要使用exec而不是chdir。 – User 2015-03-16 04:29:25
然后,某些类别分配具有与POSIX标准互斥的严格规则。 – 2015-03-18 00:47:01