当前位置: 首页 > 面试题库 >

在C程序中的Linux Shell中更改工作目录

有宏邈
2023-03-14
问题内容

我的目标是编写一个类似于Linux的基本Shell的C程序。除了更改工作目录外,我一切正常。我已经尝试了system()for输入字符串cd,但没有任何反应。我也尝试过chdir("tokened string"),也没有运气。谁有想法?这是我的代码的一部分:

        fgets(cmdStr, sizeof(cmdStr), stdin);

        if( strncmp("quit", cmdStr, 4) == 0 || strncmp("Quit", cmdStr, 4) == 0  )
        {
            break;
        }
        else if( strncmp("cd", cmdStr, 2) == 0 )
        {
            char *token = strtok(cmdStr, " ");
            token = strtok(NULL, " ");
            chdir(token);
        }
        else
        {
            system(cmdStr);
        }
    }

是否有可能做到这一点?还是这是与子外壳无法执行某些操作有关的简单情况?

编辑:上面的代码已完成。


问题答案:

fgets()将结尾'\n'字符留在中cmdstr

如果您键入cd foo,您会打电话chdir("foo\n")而不是chdir("foo")



 类似资料:
  • 问题内容: 是用于更改工作目录的shell命令。 如何在Python中更改当前的工作目录? 问题答案: 你可以使用以下命令更改工作目录: 使用此方法时,有两个最佳实践: 在无效路径上捕获异常(WindowsError,OSError)。如果抛出异常,请不要执行任何递归操作,尤其是破坏性操作。它们将沿旧路径而不是新路径运行。 完成后,返回到旧目录。可以通过将chdir调用包装在上下文管理器中以异常安

  • 问题内容: 如何在Java程序中更改当前工作目录?我已经找到的关于该问题的所有信息都声称你根本做不到,但我不敢相信确实如此。 我有一段代码可以使用通常从其开始的目录中的硬编码相对文件路径打开文件,而我只想能够从其他Java程序中使用该代码而不必从内部启动特定目录。看来你应该可以拨打,但据我所知,仅默默地拨打那条电话就行不通了。 我会理解,如果Java不允许你这样做,或者不是因为Java允许你获取当

  • 问题内容: 我想用Go 实现命令: 但是当我在shell中运行时,它仍然不会切换到我的主目录。 那么如何通过运行go文件在shell中更改我的工作目录? 问题答案: 你做不到 每个子进程都有从父进程继承的自己的工作目录。在这种情况下,您将从其父级(您的shell)获取其工作目录。子进程无法更改父进程的目录或任何其他状态。 这是基本的过程分离。允许子进程影响其父进程将遇到各种安全性和可用性问题。 外

  • 问题内容: 我想实现一个userland命令,该命令将使用其参数之一(路径)并将目录更改为该目录。程序完成后,我希望外壳位于该目录中。所以我想用外部程序来实现命令。 可以在python脚本中完成还是必须编写bash包装器? 例: 问题答案: 其他人指出,您不能从孩子那里更改父母的工作目录。 但是有一种方法可以实现您的目标-如果从shell函数中进行cd,则 可以 更改工作目录。将此添加到您的〜/

  • 我是 Jenkins 的新手,我有以下问题 刚刚在MacOS Sierra(10.12.6)上安装了Jenkins2,并且在 /Users/Shared/Jenkins/下创建了一个新用户,但是当我尝试运行maven编译命令时,通过一个新的作业,我有以下错误: 我尝试手动运行该命令,得到了以下结果: 我该如何解决这个问题?我想我必须更改工作区权限,但我不知道该怎么做。 请帮忙!

  • 问题内容: 我需要从java项目中一个软件包中的一个函数中执行一个.exe文件。现在,工作目录是Java项目的根目录,但.exe文件位于项目的子目录中。这是项目的组织方式: 最初,我尝试直接通过以下方式运行.exe文件: 但是问题是外部.exe需要访问其自己目录中的某些文件,并一直认为根目录是其目录。我什至尝试使用.bat文件来解决问题,但是出现了同样的问题: .bat文件与.exe文件位于同一目