问题标签 [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.
objective-c - 在等待任务时忽略用户输入 - Objective-C
我有一个带有“转换”按钮的应用程序。当我单击此按钮时,应用程序使用 NSTask 启动一个新进程,然后使按钮变灰,直到进程完成。
我的问题是,该应用程序会保存用户在等待过程完成时所做的任何点击。因此,即使按钮是灰色的,用户也可以单击它,并且该过程将在完成后立即重新开始。
我正在等待该过程完成使用:
在等待此任务完成时如何忽略任何用户输入?
objective-c - 通过 NSTask 重新启动应用程序会忽略 LSMinimumSystemVersionByArchitecture
我在 10.5 上重新启动我的应用程序时遇到了问题。在我的 Info.plist 中,我设置了 LSMinimumSystemVersionByArchitecture,以便应用程序在 x86_64 上以 64 位运行,在 i386、ppc 和 ppc64 上以 32 位运行。
我在应用程序中有一个首选项,允许用户在 Dock 图标和 NSStatusItem 之间切换,并且一旦用户使用以下代码更改设置,它就会提示用户重新启动应用程序:
但是,当它在 10.5 上执行时,它会以 64 位重新启动应用程序,这对我来说不是理想的结果。从我收集阅读文档的内容来看,因为当应用程序通过命令行启动时不会读取 LS* 键。
有没有解决的办法?我尝试做类似下面的事情,它在 10.6 上工作,但在 10.5 上它对我啁啾叫“无法访问启动路径”。([NSApp isOnSnowLeopardOrBetter] 是一个检查 AppKit 版本号的类别)。
cocoa - 关于 NSTask 的程序结构
我想运行未知数量(在编译时未知)的 NSTask,我想同时运行未知数量(同样,在编译时,最多 8 个)它们。所以基本上我遍历一个文件列表,生成一个 NSTask,运行它,直到同时运行最大的任务,并且每当一个人完成另一个 NSTask,直到所有这些都完成。
我的方法是创建一个生成 NSTask 的类,并将其子类化以在有不同输入(从界面进行的更改)时在这里和那里更改参数。然后超类将运行 NSTask 并将有一个 @synthesize 方法返回其进度。这些对象将在上述重复循环中生成并显示进度。
这是一个好方法吗?如果是这样,有人可以给我一个简单的例子来说明重复循环的样子吗?我不知道一旦它们运行我将如何引用所有对象。
提前致谢。
cocoa - 使用 NSTask 将系统探查器信息保存在 .spx 文件中
在 Cocoa 中,我正在尝试实现一个按钮,当用户单击该按钮时,它将捕获系统分析器报告并将其粘贴到桌面上。
代码
但这不会将文件保存到桌面。拥有 NSArray *args = [NSArray arrayWithObjects:@"-xml",@"-detailLevel",@"full",nil] 可以工作,它会将整个 sys 分析器输出丢弃在控制台窗口中。
关于为什么这不起作用或如何更好地实现这一点的任何提示?我试图避免使用 shell 脚本或 AppleScript 来获取系统分析器。如果没有任何工作,那将是我的最终选择。提前致谢。
cocoa - 使用 NSTask SSH 到另一台计算机
有没有办法可以使用 NSTask 连接到另一台计算机(在这种情况下是笨拙的)并在该设备上运行命令?我也有密码。
objective-c - 如何使用通过 NSTask 启动的应用程序打开文档?
我已经厌倦了内置的open
Mac OS X 命令,主要是因为它使用您的实际用户 ID 而不是有效用户 ID 运行程序;这会导致sudo open Foo
使用您的帐户而不是帐户打开 Foo 及其关联的应用程序root
,这让我很恼火。所以我决定做一些替代品。
到目前为止我已经成功了:我可以在open -a
oropen -b
方式下打开任何程序,并且支持可选等待。我正在NSTask
为此目的使用。
但是,我也希望能够打开文档。据我所知,您需要使用NSWorkspace
它,但是使用NSWorkspace
启动程序会导致它们使用您的帐户凭据而不是命令行程序的凭据启动。这正是默认open
工具所做的,而这正是我不想要的。
那么,我怎样才能有一个程序请求另一个程序在不使用的情况下打开一个文档NSWorkspace
?从NSTask
对象中,我可以获得进程 ID,仅此而已。
cocoa - NSTask string encoding problem
In my program, I'm grep-ing via NSTask. For some reason, sometimes I would get no results (even though the code was apparently the same as the command run from the CLI which worked just fine), so I checked through my code and found, in Apple's documentation, that when adding arguments to an NSTask object, "the NSTask object converts both path and the strings in arguments to appropriate C-style strings (using fileSystemRepresentation) before passing them to the task via argv[]" (snip).
The problem is that I might grep terms like "Río Gallegos". Sadly (as I checked with fileSystemRepresentation), that undergoes the conversion and turns out to be "RiÃÅo Gallegos".
How can I solve this?
-- Ry
cocoa - 在我的代码中找不到泄漏
在过去的几个小时里,我一直在试图找到我的代码中的内存泄漏。这里是:
我试图遵循 Cocoa 内存管理的一些基本规则,但不知何故似乎仍然存在泄漏,我相信这是一个正在泄漏的数组。如果 possibleMatches 很大,这很明显。您可以通过使用任何大文件作为“~/Desktop/file.txt”和表达式来尝试代码,这些文件在 grep-ing 时会产生许多结果。
我犯了什么错误?
谢谢你的帮助!
-- 瑞
编辑:我刚刚使用 Clang 静态分析器在我的代码中查找泄漏,但它没有找到任何泄漏。它只找到无效的初始化,但这些不能对我的泄漏负责......
cocoa - NSNotification 和多线程
我正在尝试NSTaskDidTerminateNotification
在我的多线程应用程序中获取通知,但无法正常工作。当我在单线程应用程序上测试它时,它似乎确实有效。在init
我有[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskDidEnd:) name: NSTaskDidTerminateNotification object: myTask];
并且我很确定它被调用是因为其他对象(如 myTask)正在那里启动。该taskDidEnd:
方法定义为
在 dealloc 中,观察者被移除。
这一切都发生在一个在单独线程内启动的对象中,我想在同一个对象内接收该通知。
objective-c - 在 Objective-C 中将 control+c (SIGINT) 发送到 NSPIPE
我正在尝试终止通过 NSTask 生成的 openvpn 任务。
我的问题:
我应该将ctrl+ c(SIGINT) 发送到我的 NSTask 的输入 NSPipe 吗?
或者,我正在考虑使用 kill(pid, SIGINT); 但它会复杂得多,因为必须通过绕道确定进程 ID([task processIdentifier] 在这里没有帮助) - 原始 NSTask 调用:
这不好,我知道,但它只被调用一次,并且在这种情况下已经输入了 sudo 密码。