有没有办法使用C语言更改目录?

Posted

技术标签:

【中文标题】有没有办法使用C语言更改目录?【英文标题】:Is there any way to change directory using C language? 【发布时间】:2010-11-20 14:07:54 【问题描述】:

有什么方法可以通过执行 C 程序切换到任何目录

【问题讨论】:

您在寻找cd吗?或者您是否正在寻找一种在 C 中实际设置活动目录的方法? 这叫锤子! :P 这个问题通常作为练习给学习类 unix 操作系统的学生。如果是这种情况,请仔细注意彼得所说的哪些进程可以和不可以受到影响。 【参考方案1】:

chdir() 函数。如需更多信息,请使用man chdir

【讨论】:

【参考方案2】:

是的,chdir() 函数。

【讨论】:

【参考方案3】:

嗯,改变当前目录的POSIX命令是:

chdir(const char*path);

请参阅recent POSIX documentation for chdir() is here。

【讨论】:

【参考方案4】:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char* argv[])

    system("C:\\windows\\notepad.exe");
    chdir("C:\\windows\\desktop");
    return 0;

根据this

【讨论】:

【参考方案5】:

根据您的操作系统,更改当前目录有不同的调用。这些通常只会更改运行可执行文件的进程的当前目录。进程退出后,您将进入您开始时所在的目录。

【讨论】:

谢谢彼得,所以目录的物理变化似乎不会发生。 当前目录是进程状态的一部分(如打开的文件、内存映射、环境变量...)。通常一个进程不能改变另一个进程的状态(通常,调试器等可能有特权,但那是另一回事了)。 这就是为什么'cd'是一个内置的shell,而不是一个单独的可执行文件。 有一个解决方法,使用 [code] cd `whateverProgramThatPrintsDirToStdout` [/code]【参考方案6】:

chdir() 仅更改进程的当前工作目录,而不更改您正在工作的上下文。假设您在终端中执行一个程序,并且您的当前目录是/home/Documents,那么在执行具有以下几行的程序时

chdir("cd ../Downloads");

不会改变终端的工作目录,只会改变进程的工作目录。

【讨论】:

以上是关于有没有办法使用C语言更改目录?的主要内容,如果未能解决你的问题,请参考以下文章

WINDOWS操作系统下的C语言头文件存放在哪个目录中?

C语言中 system的各种参数

有没有办法在 Android.bp 文件中定义 C 语言宏?

cython编译Python为c语言

iOS 更改应用程序语言目标 c 无法正常工作

Android:如何在 C 语言中更改进程名称?