问题标签 [nstask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
9425 浏览

objective-c - NSTask 没有从用户的环境中获取 $PATH

我不知道为什么这个方法返回一个空白字符串:

如果不是@"git"作为参数传递,而是通过,@"which"我会/usr/bin/which按预期返回。所以至少原理是有效的。

从终端

所以它在那里工作。

我能想到的唯一一件事which就是不要搜索我环境中的所有路径。

这真让我抓狂!有没有人有任何想法?

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

0 投票
4 回答
1128 浏览

objective-c - 使用 NSTask:返回输出后应用程序冻结

嗨,我有以下代码:

代码的目的有点复杂,它使用 otool 获取二进制文件使用的共享库列表,然后使用 sed 和 awk 将其过滤为机器可读格式。只是为了测试我使用了 Mac OS X TextEdit.app 的二进制文件。

问题是代码运行并返回输出,但随后冻结了应用程序。我一行一行地浏览它,发现这一行是问题所在:

data = [[输出文件HandleForReading] readDataToEndOfFile];

此行本身将输出记录到控制台,然后冻结应用程序。我通过删除该行之后的所有其他行来检查这一点,它仍然记录输出并冻结。调试器中没有任何内容,任何有关如何解决此问题的建议将不胜感激。

0 投票
2 回答
618 浏览

objective-c - 将 awk 与 NSTask 一起使用

我将如何使用这个 awk 命令:

与 NSTask?我已经尝试将 /usr/bin/awk 设置为启动路径,'NR>1{print $1}'作为参数,然后将要修改的字符串作为另一个参数,但我得到的只是:

任何帮助,将不胜感激 :)

0 投票
5 回答
1590 浏览

cocoa - 确保 Cocoa 中的子进程已死

我正在编写一个启动运行简单 Web 服务器的子进程的应用程序。我正在使用 NSTask 并通过管道与它通信,一切似乎或多或少都很好。但是,如果我的程序崩溃,子进程会保持活动状态,并且下次启动应用程序时,旧子进程和新子进程之间会发生冲突。当拥有的应用程序死亡时,有什么方法可以确保子进程死亡?

0 投票
5 回答
1588 浏览

cocoa - OS X 10.6 Snow Leopard 中的 NSTask 问题

有其他人在 10.6 中看到或听说过 NSTask 的任何问题吗?

该代码昨天运行良好,今天无法正常运行。

该任务完成了它应该做的事情(我检查了输出,它很好),但程序将无限期地等待该waitUntilExit方法。我有一些使用类似代码的单元测试,它们以前都通过了,但截至昨天,它们不再工作。

0 投票
6 回答
4051 浏览

cocoa - 在传递大量数据时解决 NSFileHandle NSTask 阻塞问题

我有一些代码可以处理从我的应用程序中导出数据。它接收一个充满 XML 的 NSString 并通过 PHP 脚本运行它以生成 HTMl、RTF 等。除非用户有一个很大的列表,否则它工作得很好。这显然是由于它超出了 NSPipe 的 8k 左右的缓冲区。

我在 readPipe 和 readHandle 中解决了它(我认为),但我不确定如何在 writeHandle/writePipe 中处理它。除非我在 gdb 中打破它,否则该应用程序将[writeHandle writeData:[in...在它上面进行,等待几秒钟然后继续。

关于如何在我的代码中解决此问题的任何帮助?

0 投票
1 回答
693 浏览

objective-c - 将 shell 脚本转换为 Objective-C CLI

我打算将我拥有的相当长的 shell 脚本转换为 Objective C 命令行工具。我打算使用 NSTask 来运行 shell 命令(这是一个大脚本,它有几千个复制/移动/删除操作)。我的问题是,持续分配和取消分配 NSTask 对象来运行所有这些命令会导致性能大幅下降吗?

有没有比使用 NSTask 更好的方法呢?

谢谢

0 投票
3 回答
468 浏览

objective-c - NSTask 返回 HTTP 标头

我正在运行/usr/bin/perl/usr/bin/php通过 NSTask 运行并想要检索程序的 HTTP 标头。我已经正确格式化了环境(Perl 要求 env vars 以 为前缀HTTP_),但是除了原始输出之外,这两个任务都没有返回任何内容。我已经阅读了关于 NSTask 的文档以及 php 和 perl 的手册页,但还没有看到任何强制输出 HTTP 标头的方法。

有任何想法吗?

编辑:我意识到这是一个古老的问题,但我刚刚重新发现它并意识到我应该报告。问题是我应该一直在使用php-cli,而不是php。我必须php-cli从源代码下载和编译才能使其按预期工作。然而,一旦我这样做了,它就像一个魅力。:)

0 投票
3 回答
12626 浏览

ios - 适用于 iPhone 的 NSTask 或等效项

我有一个开源项目 (gdal),我想将它编译并作为 iOS 应用程序的一部分运行。我一直期待使用NSTask,但我现在看到它在 iOS 3.0 中已被删除。我还在其他地方看到不允许运行外部应用程序,尽管这将是我的应用程序包中的资源。

有没有其他人找到在他们的 iOS 应用程序中运行命令行工具的方法?

0 投票
2 回答
653 浏览

cocoa - 将 NSTask 与 NSPipe 和产生另一个进程的 Perl 脚本一起使用

我在一个 NSTask 对象中运行一个 Perl 脚本,它的输出进入一个 NSPipe。我正在使用通知来定期接收它的输出并更新 GUI。

Perl 脚本实际上生成了其他进程,这些进程的输出似乎没有进入此管道,但确实出现在调试器控制台中,我可以看到它们在那里运行。当其他进程结束并且主进程恢复时,应用程序开始再次从管道接收通知。

是否可以将这些进程的输出放到同一个管道中,或者我可以从中获取通知的另一个管道中?

非常感谢