NSTask 启动路径不可访问。在 Xcode 中工作。 XCode 显示错误

2023-12-22

好的。关于堆栈溢出有几个与此相关的问题。这是唯一的问题 https://stackoverflow.com/questions/8254680/nstask-only-returning-standarderror-in-release-build最接近地雷,但它使用通知。

代码非常简单。创建一个新的空 Mac OSX 项目并将以下代码粘贴到applicationDidFinishLaunching:方法。它应该获取任何可执行文件(在本例中为 GIT)的路径。

NSTask *aTask = [[NSTask alloc] init];
NSPipe *outputPipe = [NSPipe pipe];
NSPipe *errorPipe = [NSPipe pipe];

[aTask setStandardOutput: outputPipe];
[aTask setStandardError: errorPipe];
[aTask setArguments:[NSArray arrayWithObject:@"which"]];
[aTask setLaunchPath:@"/usr/bin/git"];

NSFileHandle *outputFileHandler = [outputPipe fileHandleForReading];
NSFileHandle *errorFileHandler = [errorPipe fileHandleForReading];

[aTask launch];
[aTask waitUntilExit];

// Task launched now just read and print the data
NSData *data = [outputFileHandler readDataToEndOfFile];
NSString *outPutValue = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];

NSData *errorData = [errorFileHandler readDataToEndOfFile];
NSString *errorValue = [[NSString alloc] initWithData:errorData encoding:NSUTF8StringEncoding];

NSLog(@"Error value: %@",errorValue);
NSLog(@"Output Value: %@",outPutValue);

此代码设置两个读取管道并运行一个命令:which git.

如果我在 XCode 中运行它,我会正确得到以下结果:

Error value: ""  
Output Value: /usr/bin/git

如果我转到 build/Products/Debug 文件夹并双击可执行文件,我会在控制台应用程序上打印以下消息:

问题:那么,这里真正的问题是什么?请不要提出替代解决方案...我也想知道问题是什么..谢谢。


好吧,事实证明答案是堆栈溢出,但它分布在不同的问题中。

问题在这里提出 ->NSTask 的命令 https://stackoverflow.com/questions/10965007/commands-with-nstask在这里 ->NSTask 启动路径不可访问 https://stackoverflow.com/questions/3221432/nstask-launch-path-not-accessible还有

但截至目前,他们的答案尚不清楚问题所在。只有在阅读了问题之后NSTask 未从用户环境中获取 $PATH https://stackoverflow.com/questions/386783/nstask-not-picking-up-path-from-the-users-environment(问题的标题具有误导性)并且有这两个答案NSTask 未从用户环境中获取 $PATH https://stackoverflow.com/questions/386783/nstask-not-picking-up-path-from-the-users-environment/1817870#1817870 and 找出 Cocoa 中可执行文件的位置 https://stackoverflow.com/questions/208897/find-out-location-of-an-executable-file-in-cocoa/387809#387809我意识到了解决方案。

看起来这是关于设置 NS 任务或用户的 shell(例如 ~/.bashrc)以便正确 NSTask 可以看到环境($PATH)。

解决方案:

[task setLaunchPath:@"/bin/bash"];
NSArray *args = [NSArray arrayWithObjects:@"-l",
                 @"-c",
                 @"which git", //Assuming git is the launch path you want to run
                 nil];
[task setArguments: args];

然而,这假设用户的外壳是alwaysbash 对于其他人来说它会失败。通过确定外壳来解决这个问题。

NSDictionary *environmentDict = [[NSProcessInfo processInfo] environment];
NSString *shellString = [environmentDict objectForKey:@"SHELL"];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSTask 启动路径不可访问。在 Xcode 中工作。 XCode 显示错误 的相关文章

  • 如何在可编写脚本的应用程序中将任意 AppleScript 记录传递给 Cocoa?

    我有一个 Cocoa 应用程序 其中包含 sdef XML 文件中描述的 AppleScript 字典 sdef 中定义的所有 AppleScript 类 命令等都是工作属性 除了我的 提交表单 命令 提交表单 命令是我尝试将任意信息哈希表
  • 从 cocoa 编辑系统偏好设置

    有没有办法使用可可以编程方式编辑系统首选项 是否需要一些框架 我需要这样做来更改全局代理设置 另外 我的应用程序是沙盒的 有关于如何执行此操作的示例代码吗 感谢您的帮助 您正在寻找系统配置框架 但这并不容易 我认为沙盒应用程序不可能这样做
  • ios 导航 堆栈操作

    我在尝试从 iOS 应用程序操作导航堆栈时遇到问题 或者至少是由于这种操纵而产生的行为 我的情况 我有 3 个 ViewController 控制器a显示多个级别 控制器 b 是游戏视图 控制器 c 是某种分数 显然 我将在控制器 a 中选
  • ios7 navigationController PushViewController 动画错误

    看来我在 navigationController PushViewController 方法中发现了一个错误 为了重新创建它 我采用了示例主详细信息项目并对 didSelectRow method void tableView UITab
  • UIDocumentInteractionController 阻止“打开方式”表中的空投

    在我的应用程序中 我允许用户通过 Instagram 分享照片 这需要使用 UIDocumentInteractionController 如果手机支持 则会自动检测空投 如何将其从 打开方式 操作表中删除 即使我使用 UIActivity
  • 如何解决 CoreData mogenerator 未找到问题

    我收到如下所示的错误 我不知道我错过了什么 我该如何解决这个问题 如下图所示 Users nischalhada Documents XcodePro mnepalnews revisited 2 0 CoreData mogenerato
  • 确定 Objective-C 方法在运行时是否是可变的

    有没有办法在运行时找出给定方法是否是可变参数类型 就像是method getTypeEncoding 这不会告诉我一个方法是否接受可变数量的参数 或者有什么技巧可以告诉我们吗 罗伯特的评论是正确的 考虑 interface Boogity
  • 推入 UINavigationController 时隐藏 FBFriendPickerViewController 导航栏

    介绍一个实例FBFriendPickerViewController using presentViewController animated completion 非常简单 该类似乎是针对该用例的 但是 我想推送一个实例FBFriendP
  • 关于窗口层次结构的警告

    我的调试器中出现这样的警告 这是什么意思 Warning Attempt to present
  • 来自 iPhone/iPad 的 json Web 服务

    有人可以帮助我解决如何从 iphone 或 ipad 使用 json Web 服务的问题吗 这里我的要求是使用 API 密钥实现 json webservice 如果可能的话发布一些教程或示例链接 谢谢 规范的 JSON 处理库是here
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • 在 UIImage 顶部绘制透明圆圈 - iPhone SDK

    我在尝试找出如何在 UIImageView 中的 UIImage 顶部绘制透明圆圈时遇到了很多麻烦 谷歌给了我线索 但我仍然找不到有效的例子 有没有人知道的例子可以证明这一点 最简单的方法就是创建一个半透明的方形 UIView 然后将其图层
  • Objective-C中如何使继承的类能够看到父类的隐藏方法[重复]

    这个问题在这里已经有答案了 我有两个类 Class1 和 Class2 第二个类继承自第一个类 我需要重写 Class1 的 update 方法来实现我的目标 继承方法中 update方法的改变是在代码中间进行的 所以我不能使用 超级更新
  • 如何在 UICollectionView 的节标题中动态添加标签和按钮?

    请帮助我如何水平添加标签和水平添加类似的按钮 但每个按钮应像另一个部分一样在每个标签的下方对齐 这应该在 UICollectionView 的标题中动态发生 因为标签和按钮的数量根据我的数据 我想制作一种 Excel 类型的布局 并在标题中
  • Codesign:什么是未密封内容?

    我刚刚升级到 XCode 6 并尝试构建我的开发者 ID 签名的 Mac 应用程序 但是 我现在收到以下协同设计错误 unsealed contents present in the root directory of an embedde
  • GMSMapView 中的倒多边形

    我必须在我的 iPhone 项目中使用 Google 地图 并且我正在使用 GMSPolygon 来绘制多边形 但是如何填充地图上除多边形内部之外的所有位置 就像下图一样 谢谢 我玩过你的问题 主要思想是用多边形填充整个地球 然后为您的特定
  • 使用超类初始化器初始化类

    我有两个类 一个是另一个的子类 比如说Animal and Dog 超类有一些初始化器 比如initAnimal 子类有一些初始化器 比如initDog 问题是 从编译器的角度来看 做类似的事情是完全合法的Dog adog Dog allo
  • 如何检测Retina高清显示屏?

    UIScreen有一个新的 nativeScaleiOS 8 中的属性 但文档没有提及它 property nonatomic readonly CGFloat nativeScale 还有一个scale属性 但文档说它是 2 用于视网膜显
  • 我什么时候应该对 IBOutlet 使用弱或强限定符? [复制]

    这个问题在这里已经有答案了 可能的重复 ARC 下 IBOutlets 应该强还是弱 https stackoverflow com questions 7678469 should iboutlets be strong or weak
  • 将 CALayer 旋转 90 度?

    如何旋转CALayer90度 我需要旋转所有内容 包括子图层和坐标系 Obj C theLayer transform CATransform3DMakeRotation 90 0 180 0 M PI 0 0 0 0 1 0 Swift

随机推荐

  • 您会推荐 Iron Ruby、Iron Python 或 PowerShell 将 C# 应用程序设为脚本宿主吗?

    您会推荐 Iron Ruby Iron Python 或 PowerShell 将 C 应用程序设为脚本宿主吗 经过一些快速修补后 现在我倾向于使用 powershell 有两个主要原因 请注意这些纯粹是我的观点 如果它们是错误的 我很想知
  • 使用 jquery 编辑现有的内联样式?

    我有一些 html 似乎默认为 ul 但我需要 Jquery 来拯救我并将 top 72px 更改为 top 37px 这可能吗 在 Firefox 中似乎显示为 37px 但在 IE7 中显示为 72px Thanks 编辑 添加更多信息
  • Common Lisp:获取宏的文档字符串

    在 SBCL 中 我可以获得函数的文档字符串 如下所示 documentation mapcar t 但是 我不明白如何获取宏的文档字符串 例如 给定宏 defmacro with lines in file line filename b
  • 如何调整图像大小或作为 NSAttributedString NSTextAttachment 完成(或设置其初始大小)

    我有一个 NSAttributedString 我要向其中添加一个 NSTextAttachment 该图像为 50w x 50h 但我希望它缩小以反映属性字符串的行高 我以为这会自动完成 但我想不会 我查看了 UImage 类参考 但该图
  • Java 8 LocalDateTime 的周末过滤器

    我想写一个布尔值函数 如果给定则返回 trueLocalDateTime落在两个特定时间点之间 否则为 false 具体来说我想要一个LocalDateTime过滤给定日期是否在 22 00 GMT Friday 和 23 00 GMT S
  • Google Play 服务已过时。需要 10084000 但找到 9879470。无法更新

    我正在使用 Firebase 制作一个 Android 应用程序 这些是引起问题的行 dependencies compile com google firebase firebase core 10 0 1 compile com goo
  • AsyncTask 在后台运行时看不到 ProgressDialog

    我在我的应用程序中使用 AsyncTask 来下载网址 我在 onPreExecute 上使用 ProgressDialog 来等待 但在进程完成时我看不到 ProgressDialog 我暂时看到了它 想在下载时看到它而不是下载后看到它
  • 将 PreferenceScreen 类型设置为“选择联系人”

    我有一个带有一些 EditText 和 CheckBox 首选项的 PreferenceActivity 我想添加联系人首选项 以便按下按钮时可以选择联系人号码 使用 PreferenceActivity 功能可以吗 TIA Pat Lon
  • 如何在body标签中insertBefore()元素?

    我尝试在 js 中使用 insertBefore 如下所示 var p document createElement p p innerHTML test1 document body insertBefore p null var p d
  • Node.js 日志记录

    是否有任何库可以帮助我处理 Node Js 应用程序中的日志记录 我想做的就是 我想将所有日志写入一个文件 并且我还需要一个选项 例如在特定大小或日期后推出文件 我已经合并了 log4js 我试图将所有配置详细信息保存在一个文件中 并仅使用
  • python 中使用线程的超时函数不起作用

    我找到了创建超时函数的代码here http code activestate com recipes 473878 timeout function using threading 这似乎不起作用 完整的测试代码如下 def timeou
  • Ninject 使用 RavenDB 会话绑定到 MVC3 中的常量值的问题

    我见过很多使用 ASP NET MVC 配置 Ninject 的不同方法 但随着 MVC 框架的每个版本的发布 实现似乎都略有变化 我正在尝试将 RavenDB 会话注入我的存储库 这是我所拥有的几乎可以工作的东西 public class
  • 使用 rasa nlu ValueError 进行训练时:文件 x.json 的数据格式未知

    我正在使用 rasa nlu 训练 json 文件数据以进行意图分类 当我使用任何 md 文件进行训练时 它正在工作 但是当我尝试使用 json 文件时 它显示错误 我尝试验证 json 文件的格式是否正确 from rasa nlu tr
  • 如何在 x86/x64 中创建跳转表?

    我目前正在学习 x86 x64 asm 我想尝试制作一个跳转表 但我不知道我做错了什么 这个概念本身对我来说并不新鲜 我只是不明白为什么它不起作用 当我研究这个问题时 我几次看到 的用法 但我不确定这是否是正确的方法 data var qw
  • 谷歌地图:检查折线是否穿过圆

    我想问一下如何检查某条折线是否穿过圆 在下图中 红色折线穿过绿色圆圈内部 我知道可以确定标记是否在圆内 但我不知道该怎么做 也不知道它对于折线是否可行 我还有 8 点声誉 所以无法发布图片 图片链接如下 https i stack imgu
  • Android 中透明背景的对话框

    如何从 Android 对话框中删除黑色背景 图片显示了问题所在 final Dialog dialog new Dialog Screen1 this dialog requestWindowFeature Window FEATURE
  • Java-泽西岛、JAX RS

    我有一些开发 Java 程序的经验 然而 我一直很难理解一些基础知识 例如构成 Java 企业应用程序的所有不同组件 例如 我已经实现了从 J2ME 应用程序使用的基于 RESTful 和 SOAP 的 Web 服务 并为我的 MSC 执行
  • 从 Java 访问元组的奇怪行为

    我正在寻找关于我在 Java 访问在 Scala 中创建的元组中发现的非常奇怪的行为的解释和 或版本控制详细信息 如果可能 我将通过我所做的简单测试来展示奇怪的行为 我创建了这个 Scala 类 class Foo def intsNull
  • 在 SQLAlchemy 中插入时处理重复的主键(声明式风格)

    我的应用程序使用范围会话和 SQLALchemy 的声明式风格 这是一个网络应用程序 许多数据库插入都是由Celery 任务调度程序 通常 当决定插入对象时 我的代码可能会执行以下操作 from schema import Session
  • NSTask 启动路径不可访问。在 Xcode 中工作。 XCode 显示错误

    好的 关于堆栈溢出有几个与此相关的问题 这是唯一的问题 https stackoverflow com questions 8254680 nstask only returning standarderror in release bui