Objective c 如何在cocoa中运行shell命令并获得输出?

Objective c 如何在cocoa中运行shell命令并获得输出?,objective-c,cocoa,shell,nstask,Objective C,Cocoa,Shell,Nstask,经过反复搜索,我还没有找到解决这个问题的好办法:如何在obj-c中运行shell命令并获得它的输出。我读过很多关于这方面的问题,但都没有回答我的问题 有些人获得退出值(),有些人只运行命令(),最后有些人让我将输出写入文件() 我真的希望避免写/读文件,因为它不是一个非常干净的解决方案 没有办法直接在obj-c中读取输出吗?如果是,怎么做 第一个链接()中的“doshellscript”中的代码实际上返回了一个带有命令输出的NSString。如果它对您不起作用,可能命令是通过stderr而不是s

经过反复搜索,我还没有找到解决这个问题的好办法:如何在obj-c中运行shell命令并获得它的输出。我读过很多关于这方面的问题,但都没有回答我的问题

有些人获得退出值(),有些人只运行命令(),最后有些人让我将输出写入文件()

我真的希望避免写/读文件,因为它不是一个非常干净的解决方案


没有办法直接在obj-c中读取输出吗?如果是,怎么做

第一个链接()中的“doshellscript”中的代码实际上返回了一个带有命令输出的NSString。如果它对您不起作用,可能命令是通过stderr而不是stdin输出的?你试过这个了吗?Cocoa中运行命令的标准机制是NSTask,因此至少从这里开始。

看看类
PRHTask
。它是用完成块替换
NSTask

从标题中提取:

  • 首先,不必为标准输出和错误设置自己的管道,您可以告诉任务为您累积输出,并在任务完成时检索输出
  • 其次,当进程退出时,而不是发布NSNotification,PRHTask将调用您提供的两个块中的任何一个。如果需要,可以将它们都设置为同一块

如果您的任务需要管理员权限,您可能需要查看。

请重新格式化您的问题以提高可读性。对不起,我假设后端会自动解析URL。有些段落也会有很大的改进。这让人困惑。您正在cocoa中运行shell命令吗?(在应用程序中?)还是在终端中?在我预期的应用程序中,我将在一台破烂不堪的iOS设备上运行该命令,然后使用输出创建一个漂亮的表。我希望用户能够将自定义参数传递给命令,否则我将直接集成C代码。感谢您指出这一点,最初我没有将此理解为从临时文件读取并获取脚本的退出代码,请怪我在凌晨2:30读取。今天早上我头脑清醒,能够把这个功能拆开,让它工作起来。