如何使用C程序中的exec命令更改目录?

jam*_*mes 1 c unix

我必须从我的C程序更改工作目录.为此我使用了以下命令: execl("/bin/cd","cd","..",(char*)0); 但是这个命令没有改变目录?这个命令有什么问题,还是有其他方法可以从C程序更改工作目录?

Giu*_*one 10

要更改当前目录,您应该使用chdir:

int chdir(const char *path);
Run Code Online (Sandbox Code Playgroud)

成功时返回0.

你不能使用execl有几个原因:

  1. cd 通常是shell内置命令;
  2. 在大多数系统/bin/cd上不存在; 在极少数拥有它的系统上,它会更改当前目录,然后生成子shell进程;
  3. 当前目录是进程'属性:如果使用更改当前目录/bin/cd,则在进程终止后,您将丢失目录更改;
  4. 如果您使用来自exec系列的功能,则当前过程映像将替换为新的过程映像 - 您可以使用system,但不会修复之前的3个问题.