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

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

【问题讨论】:

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

标签: c directory executable


【解决方案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");
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-03
            • 1970-01-01
            相关资源
            最近更新 更多