问题标签 [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 投票
1 回答
717 浏览

objective-c - 连续运行多个 NSTask

我需要使用 NSTask 按顺序运行多个命令,并且想知道什么是判断任务是否完成的好方法,以便我可以继续执行下一个命令。我正在使用“sox”(我包含在我的应用程序包中)使用输入音频文件创建临时音频文件,然后需要将这些临时音频文件组合成一个文件。流程示例(不是实际的命令):

1) 歌曲A > 温度A

2) 歌曲B > 温度B

3)结合 tempA tempB > songC

我正在使用以下代码来完成第一个命令:

假设我需要在这个进程完成之后再执行两个 NSTask 进程(使用先前进程的输出),那么检测一个进程已经完成以便我可以继续下一个进程的最佳方法是什么。

谢谢。

0 投票
1 回答
1165 浏览

objective-c - NSTask + 在任务中调用 NSLog 导致双重打印消息到控制台

我有一个调用 NSTask 的应用程序,(我已经编写了 NSTask 和 App 代码)并且 NSTask 在我想要将一行写到控制台的地方调用 NSLog。

问题是我看到来自 NSTask 的控制台消息,然后我看到调用进程输出相同的消息,带有双标头......

仅仅为了读取所需的输出(BLAH BLAH BLAH)就超级混乱。有没有解决这个问题的神奇设置?

谢谢,

——汤姆

0 投票
1 回答
1086 浏览

objective-c - 保持 NSTask 会话运行 - 可可

我在我的 Cocoa 应用程序中运行一个简单的 grep 命令,如下所示:

但是,我有点想知道通过终端输入的命令是如何使用这种技术运行的,这些命令不会给出输出并且不会立即执行,除非以Control+之类的方式退出。C就像java -jar server.jar在一直运行的地方运行,直到退出会话。一旦命令启动,我将如何做这样的事情,即会话不会自动结束?

我只需要注释掉它发布的部分NSTask吗?任何建议都会很好!

0 投票
1 回答
352 浏览

cocoa - 确定终止的子进程未捕获的信号

我有一个 Mac OS X 应用程序 (Cocoa),它生成了一个 C++ 控制台助手应用程序来完成一些工作。GUI 通过 NSTask 生成助手,它们通过命名管道相互通信。这一切都很好。

如果助手应用程序死亡,GUI 会收到一个 NSTaskDidTerminateNotification,并可以调用终止原因来确定助手是正常退出还是被杀死(NSTaskTerminationReasonUncaughtSignal)。但是,有什么方法可以准确地确定哪些信号未被捕获?例如,我想知道它是 SIGBUS 还是 SIGABRT。

这可能吗?NSTask 似乎没有这个功能,但也许有一些 UNIX-y 巫术?

更新: Terminal.app 肯定知道。例如:

0 投票
1 回答
1558 浏览

objective-c - NSTask 和 Git——权限问题

在我的 Cocoa 应用程序中,我尝试使用它NSTask来运行一些基本的 Git 命令。每当我运行需要权限(SSH 密钥)才能访问远程(例如git pushgit pull)的命令时,它都会失败并出现以下错误:

权限被拒绝(公钥)。远端意外挂断

从终端运行相同的命令工作得很好,所以我认为这可能是一个问题,NSTask因为没有设置将在访问 ssh 密钥过程中某处使用的环境变量。我尝试像这样手动设置HOMEUSER环境变量:

但这没有效果。我必须设置任何特定的环境变量NSTask才能正常工作吗?

编辑:多亏了达斯汀的提示,我在弄清楚这一点上又进了一点。我使用该env命令列出了当前会话的环境变量,我发现了这个:

为了测试,我复制了该路径并将其设置为环境变量NSTask并再次运行代码,这一次成功了!也就是说,我确信SSH_AUTH_SOCK每个会话都会发生变化,所以我不能只是硬编码它。如何动态生成/检索此变量?

0 投票
1 回答
1147 浏览

objective-c - 将 NSTask "/bin/sh -c" 命令转换为正确的管道代码

有人可以帮我将以下代码转换为具有“cat”和“grep”两个 NSTask 的代码,展示如何将两者通过管道连接在一起吗?我想我更喜欢后一种方法,从那时起我不再需要担心引用和其他东西。

更新:请注意, cat 和 grep 在这里只是作为(糟糕的)示例。我仍然想为更有意义的命令执行此操作。

0 投票
1 回答
1298 浏览

objective-c - 使用 NSTask 将数据传递到工具的标准输入

假设我有一些工具,在其执行的某个时刻,它要求用户输入。例如,它可能会询问姓名和地址。在另一个时候,它可能会要求输入密码(并重新输入密码)。

NSTask 和 NSPipe 对象是否可以处理这些事情,即与命令行工具交互?

0 投票
2 回答
348 浏览

objective-c - NSTask:由于没有提供 userInfo 字典,如何在结论时获取上下文?

我正在尝试通过 NSTask 使用命令行实用程序压缩文件。

伪代码:

那么我怎样才能找出通知所属的文件对象呢?我通常使用 userInfo 字典来处理这些事情,但 NSTask 没有这样的选项。来自Apple Dev:此通知不包含 userInfo 字典。

谢谢!

0 投票
1 回答
109 浏览

objective-c - 如何获得 NSTask 进程的子进程?

如果我使用一个NSTask启动的对象,是否可以获得任务调用的进程?例如,终端这样做是为了在标题栏中显示它:

终端截图

如何获取由NSTask's 进程调用的进程?

0 投票
1 回答
2791 浏览

objective-c - 启动后写入 NSTasks 标准输入

我目前正试图围绕 NSTask、NSPipe、NSFileHandle 业务的漏洞。所以我想我写一个小工具,可以编译和运行C代码。我还希望能够将我的标准输出和标准输入重定向到文本视图。

这是我到目前为止得到的。我使用这篇文章中的代码来重定向我的 stdio:在 Cocoa 中将 stdout 重定向到 NSTextView 的最佳方法是什么?

这里是 stdoutDataAvailable 方法

该程序运行良好。它正在运行将标准输出打印到我的文本视图并从我的 inputPipe 读取“123”的 C 程序。就像我在上面的评论中指出的那样,我想在需要时在任务运行时提供输入。

所以现在有两个问题。

  1. 有没有办法在有人尝试从我的 inputPipe 读取数据时立即收到通知?
  2. 如果 1 的答案是否定的,我可以尝试其他方法吗?也许使用 NSTask 以外的类?

非常感谢任何帮助、示例代码、其他资源的链接!