有没有办法让 C++ 或 Objective-C 程序判断它是作为命令行应用程序(例如./myprog
在 shell 中)还是作为应用程序包(例如通过双击 Finder 中的 .app 或open myprog.app/
在终端中运行)?
目前我正在使用以下内容。
CFBundleRef bundle = CFBundleGetMainBundle();
CFURLRef bundleUrl = CFBundleCopyBundleURL(bundle);
char bundleBuf[PATH_MAX];
CFURLGetFileSystemRepresentation(bundleUrl, TRUE, (UInt8*) bundleBuf, sizeof(bundleBuf));
此时,bundleBuf
现在保存 .app 包的路径或包含命令行可执行文件的目录。我可以检查字符串是否以 结尾".app"
,但这很hacky。有一个更好的方法吗?