使用 chdir() 从终端更改目录

2023-12-10

我在用chdir()将目录更改为作为参数传递给该函数的值。

我明白当我使用运行我的C程序时gcc myCd.c and ./a.out ..这会将目录更改为 C 程序“内”的父目录(即为 a.out 进程生成一个子进程,并且目录的更改发生在该子进程内)。

我想要做的是,使用这个 C 程序更改终​​端上的目录。我尝试为此编写一个 shell 脚本,然后获取它并运行,这可行,但我想使用 C 来实现这一点。


你试图做的事情是无法完成的。这当前工作目录是每个进程的属性。

如果您运行的程序改变了它的cwd,它不会影响任何其他进程,除了它之后可能创建的任何子进程chdir().

更改终端工作目录的正确方法是使用cdshell 代表您执行并保留在同一进程中的命令。那是,cd是 shell 不执行的几个命令之一fork();这使得cd命令按预期工作。

source编译 shell 文件使其在 shell 进程中运行。但是,如果您要运行脚本而无需source,您会发现存在与 C 程序完全相同的问题:shell 分叉创建一个进程供脚本运行,它运行然后退出,然后 shell 继续,但其 cwd 没有更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 chdir() 从终端更改目录 的相关文章

随机推荐

  • Swift:声音输出和麦克风输入 |使用 AudioKit |

    我正在使用 gt Xcode 版本 9 2 lt 我正在使用 gt AudioKit 版本 4 0 4 lt 我已经编写了一些代码 您可以在下面找到它们应该能够 播放特定的声音 frequency 500 0HZ 监听 麦克风输入并实时计算
  • jquery datepicker - 在选择时激活另一个日期选择器

    我有 2 个 jquery 日期选择器来选择日期范围 一旦我选择了起始日期 从第一个日期选择器 我想激活第二个 截止 日期选择器 下面的代码执行此操作 但由于某种原因立即关闭日期选择器 有任何想法吗 http jsfiddle net rN
  • 如何分割长字符串以使其与给定的矩形匹配?

    我有一个长字符串 我想将它分成几部分 以便文本的每一行始终位于给定的矩形中 文本不应超出矩形的边框 矩形的高度不是问题 文本永远不会接触矩形的底部 因为矩形非常高 但这个矩形不是很宽 如何计算每行应该绘制字符串的哪些部分 我不想拆开一个字
  • Arrays.asList().contains() 给出错误的结果

    Code private static final int GOOGLE DIRECTION ID FOR MATCH 11 12 13 14 15 Log e TAG index Arrays asList GOOGLE DIRECTIO
  • R:如何使用 R 的公式符号来紧凑地生成除选定的二次项子集之外的所有二次项?

    我想要一种紧凑地使用 R 的公式符号 或其他形式 的方法 以包含一组变量 A 到 E 之间的所有二次项 不包括 D E 交互作用 我真正的问题有更长的 A C 类型变量和 D E 类型变量列表 我写了一个小函数来检查我的工作这个帖子 谢谢
  • 比较同一个表中的两个日期范围

    我有一张每家商店的销售额表 如下所示 SQL gt select from sales ID ID STORE DATE TOTAL 1 1 2010 01 01 500 00 2 1 2010 01 02 185 00 3 1 2010
  • 这是什么{! } 在具体的代码行中意味着什么? [复制]

    这个问题在这里已经有答案了 我正在阅读一段代码 它读取 Microsoft Access 数据库架构 在其他人之间 我看到循环中的那行代码 ColName SchemaTable Rows i COLUMN NAME ToString 为什
  • 在 Inno Setup 中检索 .NET 程序集的强名称

    我需要将这些 DLL 文件安装到 GAC 中 我使用预处理器来生成 Files 这些 DLL 的节条目 我需要提供一个值StrongAssemblyName范围 所以问题 可以自动检索吗StrongAssemblyName来自 Pascal
  • $.AjaxFileUpload 在最新版本的 Chrome 版本 83.0.4103.61(官方版本)(64 位)中无法运行

    从最新版本的 Chrome 版本 83 0 4103 61 官方版本 64 位 开始 Jquery AjaxFileUpload 不起作用 如果有人有想法请帮助我 这个 AJAX 调用在旧版本的 chrome 和其他浏览器 如 firefo
  • 导航栏中的下拉菜单

    所以我正在网上学习CSS 发现这段代码有点令人困惑 因为如果我删除 dropbtn 类 输出没有任何变化 为什么它放在 li a 旁边 为什么删除对输出没有影响吗 帮助将不胜感激 谢谢 这是一段代码
  • 快速计算滑动窗口上事件的方法

    假设我有x rnorm 100000 而不是做一个1000长度滑动窗口移动平均线 我想做一个1000计算所有时间的长度滑动窗口x上面是0 2 例如 x lt rnorm 1004 start lt 1 1000 record lt list
  • 服务 JSONP 的最佳内容类型?

    我有一个 web 服务 当调用时不指定回调将返回一个 JSON 字符串application json作为内容类型 当指定回调时 它会将 JSON 字符串包装在回调函数中 因此它不再是真正有效的 JSON 我的问题是 我应该将其作为appl
  • 再次容器内联块

    看这个 我想制作一个主容器 它有 2 个子容器 左 右 各占屏幕宽度的 50 左边必须包含一张照片 右侧必须包含文本 h2 和 p 正下方 文本应该位于图像的中间 我需要它来描述商店中的产品 我正在尝试这个 div border 1px s
  • 为 Gradle 中的所有项目配置存储库

    我正在尝试为所有子项目配置存储库 我有主要的build gradle buildscript repositories mavenLocal mavenCentral google jcenter dependencies NOTE Do
  • 声明未初始化变量的更好方法

    一些 libc 函数 例如sigemptyset set mut sigset t 获取一个指向变量的指针 将其视为未初始化并初始化它 我最终得到这个代码 let mut newmask std mem uninitialized libc
  • System.Text.Json 和多态代码:不适用于 WebApi 控制器

    随着 NET 7 0 的发布 System Text Json应该支持多态代码 不幸的是 当您需要从控制器的方法返回派生类型的实例时 它似乎无法开箱即用 例如 假设以下模型 public class Base public class De
  • java中的密钥库密码加密

    我需要在调用远程队列之前设置以下变量 System setProperty javax net ssl trustStore C certs trustStore jks System setProperty javax net ssl k
  • 通过 Chrome 扩展程序在 Facebook 上分享

    我想通过 chrome 扩展在 facebook 墙上分享当前打开的选项卡 url 为此 我正在使用https facebook com share php早些时候 它首先给我登录选项 然后是共享框 由于 facebook 已弃用此方法 我
  • 在 Swift 中动画字符串淡入/淡出

    我是编程新手 但在过去的两个月里 我在 iOS 版 Swift 的学习上取得了长足的进步 我正在制作一个简单的打字游戏 我构建项目的方式是我有一个隐藏的UITextView检测玩家按下的字符 然后将该字符串与可见的字符串相匹配UITextV
  • 使用 chdir() 从终端更改目录

    我在用chdir 将目录更改为作为参数传递给该函数的值 我明白当我使用运行我的C程序时gcc myCd c and a out 这会将目录更改为 C 程序 内 的父目录 即为 a out 进程生成一个子进程 并且目录的更改发生在该子进程内