有没有办法使用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语言更改目录?的主要内容,如果未能解决你的问题,请参考以下文章