什么';这就是“之间的区别”/&引用;及;开放式;在终端中,如何从XCode运行Unix可执行文件?

什么';这就是“之间的区别”/&引用;及;开放式;在终端中,如何从XCode运行Unix可执行文件?,xcode,terminal,command-line-arguments,Xcode,Terminal,Command Line Arguments,我对这一切都是新手,我想原谅我的无知 我有一个unix可执行文件。我使用命令openprogramname--args运行终端,它响应找不到资源文件(这是我传递的参数) 我试着写:./programname参数,它是有效的 首先,我想知道这两种方法之间的区别,以及为什么第一种方法不起作用,而第二种方法起作用 我现在的问题是,我不能在XCode中完成它。当一个可执行文件正在运行时,它说它找不到资源文件。我通过cmd+I将可执行文件中的一个参数传递给可执行文件,并将资源文件添加为参数 谢谢你的潜在答

我对这一切都是新手,我想原谅我的无知

我有一个unix可执行文件。我使用命令openprogramname--args运行终端,它响应找不到资源文件(这是我传递的参数)

我试着写:./programname参数,它是有效的

首先,我想知道这两种方法之间的区别,以及为什么第一种方法不起作用,而第二种方法起作用

我现在的问题是,我不能在XCode中完成它。当一个可执行文件正在运行时,它说它找不到资源文件。我通过cmd+I将可执行文件中的一个参数传递给可执行文件,并将资源文件添加为参数

谢谢你的潜在答案

“open”是一个命令,它的工作原理与您通过Finder导航到特定应用程序,然后双击该应用程序的工作原理完全相同

./是通过chmod运行标记为可执行的特定文件的一种方式

例如,您可以通过输入“open/Applications/MyApp.app/”从命令行运行Mac OS X应用程序。但是如果您这样做,它将不起作用。/MyApp.app/(假设您位于/Applications目录中)


如果在终端中键入“man open”,您可以在那里阅读更多详细信息。

open
完全等同于双击Finder中的某个对象。因此,如果在UNIX可执行文件上使用它,那么可执行文件将启动,但当前工作目录不在可执行文件所在的位置,也不一定是任何有用的内容。但是,您也可以使用它打开.doc文件或任何其他文件类型,在Finder中打开目录,在Finder中打开URL,等等

使用./name启动可执行文件是运行该程序的正常UNIX方式。键入当前工作目录时,它将位于您所在的任何位置。因此,该目录将与可执行文件所在的目录相同(除非您从磁盘上的其他位置启动,例如,通过进入目录并使用../name启动可执行文件)

您可能想做的是编写代码以获取可执行文件的路径,并查找与该路径相关的指定文件?你没有说你在用什么语言工作,令人烦恼的是,这不是POSIX规范中的东西,所以它随操作系统的不同而不同


如果你在C或者任何可以调用C(SO,C++,Objul-C等)的代码,那么<代码> NSGetExecutablePath < /C>(忽略谷歌在它之前加上一个下划线的欲望),很可能是你想要的。如果您使用的是Objective-C,则

NSString
提供了一些自动追加路径的方法。

感谢您的快速回答!我在C++中工作。我创建了一个“新目标…”,设置了makefile文件夹,激活了新目标,现在我想在“构建并运行”时使用unix方式运行我的程序。我可以从项目设置设置它吗?我不知道该把NSGetExecutablePath放在哪里对不起。。