带有命令行应用程序的 MacOSX C++ 工作目录

Posted

技术标签:

【中文标题】带有命令行应用程序的 MacOSX C++ 工作目录【英文标题】:MacOSX C++ working directory with command line applications 【发布时间】:2012-08-12 23:29:00 【问题描述】:

我一直在试图弄清楚如何将工作目录设置为与我的程序相同的目录。由于我不熟悉 Objective-C 和 Cocoa,所以我将其编写为一个基本的命令行应用程序,即标准输入/输出。由于某种原因,工作目录设置为 $HOME 目录,而不是与文件本身相同的目录。我知道使用

system("PWD");

会回显路径,但格式不可用(至少对我而言)。

编辑:为了澄清一点,我需要能够在我的机器/用户上使用文件流的相对文件路径。

【问题讨论】:

没有像“c++ 工作目录”这样的东西。请说明你的意思。是 XCode 的工作目录吗? C++ 确实使用工作目录作为相对文件路径。在 Windows 机器中,工作目录是程序所在的目录。显然,对于 OSX,它是不同的。它使用我的 $HOME 目录作为目录。 【参考方案1】:

您可以在方案编辑器中设置从 Xcode 运行工具时启动的目录。在工具栏中,单击项目名称(> 左侧),然后单击“编辑方案...”,单击左侧列表中的“运行”,然后单击右侧的“选项”选项卡,您会看到一个使用自定义工作目录的选项。

请注意,不能保证您使用的是不区分大小写的文件系统,因此您应该使用小写的pwd,否则您的system(3) 调用将失败。 ios 从不使用不区分大小写的文件系统,OS X 可以安装在不区分大小写或区分大小写的文件系统上。 getcwd(3) 在任何情况下都更有效/更合适。

此外,如果可以的话,您应该升级到当前版本的 Xcode。早期的 4.x 版本的边缘非常粗糙(有些人会说 4.4/4.5 仍然如此,但它们至少更稳定)。

【讨论】:

从 Xcode 设置工作目录的问题是我只能在我的用户上使用我的计算机上的程序。如果我要使用不同的计算机或不同的用户(这是我的意图),它会并且确实会失败。至于 system("pwd"),我通常输入大写的系统调用,因为当我为讲师提交程序时,他们需要大写的 Windows 机器的系统调用。所以这主要是大写调用的习惯。这个应用程序不是一个任务。至于升级 Xcode,我打算在我回到大学的时候升级,因为我家里的互联网绝对是可怕的。 @Morph:工作目录是启动应用程序的目录。那不是二进制文件的一部分,而是环境的一部分。如果您打开终端,将目录更改为二进制文件所在的位置并从那里启动应用程序,这将是您的目录。一般来说,虽然在 Unix 系统中,应用程序会从用户主目录启动(如果从图形环境启动)。如果需要,可以找到可执行目录:[***.com/questions/4087328/…

以上是关于带有命令行应用程序的 MacOSX C++ 工作目录的主要内容,如果未能解决你的问题,请参考以下文章

带有命令行参数的 C++ 的 Makefile 和 Bash 脚本

MariaDB vs Mysql 通过命令行导入macosx

OpenOffice 升级到 4.1.2 - 带有宏的命令行不再工作

为啥在 C++ 方法中使用 system("some.exe") 不像命令行那样工作?

Mac OSX系统LinuxWindows命令行教程

如何在带有命令行参数的 vbscript 中调用函数?