问题标签 [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.
iphone - 从 NSTask 调用时 GDB 抛出神秘错误
我尝试使用 NSTask 调用 GDB,变量“resultStringID”实际上是对应的进程 ID,“abc”只是一个 NSString。我调用 GDB 的代码如下
很感谢任何形式的帮助!:)
任务启动的输出如下所示:
iphone - 将应用程序部署到越狱的 iPhone 后出现奇怪的 GDB 行为
我试图制作一个通过 NSTask 向 GDB 发送命令并将输出定向到 UITextView 的应用程序。它在 Mac(iOS 模拟器)上运行良好。但是,当部署到实际设备(iPhone)时,它在命令“info registers”之后不显示任何寄存器代码如下:
IOS 模拟器上的输出如下所示(x86 寄存器)
实际设备(iPhone)上的输出如下所示:
在 iPhone 上运行时的构建输出如下所示:
作为旁注,我什至尝试添加参数 -arch armv7*。它仍然无法附加到指定的进程。
编辑:我可能已经找到了我的困境的根源。当我尝试通过应用程序在我的 iPhone 中调用 gdb 时,这出现在控制台中:
如果有人知道解决此问题的方法,请分享。我一直在寻找解决方案数周无济于事...
iphone - 将 GDB 附加到进程 ID 并在 iPhone 上列出其 ARM 寄存器的最佳方法?
只是想知道,将 GDB 附加到进程 ID 并在 iPhone 上列出其 ARM 寄存器(通过可可应用程序)的最可靠/最佳方法是什么?我一直在尝试 NSTask 很长一段时间,它能够列出特定进程的 x86 寄存器(通过 iOS 模拟器)。但是当部署在 iPhone 上时,它就不起作用了。我还没有看到有人执行成功的异步操作,例如我在 iPhone 上寻求的操作。我正在考虑使用 Applescript 运行带有 gdb 命令的 bash 脚本,有人愿意评论这样一项任务的可行性吗?
很感谢任何形式的帮助!
我尝试使用 NSTask 来实现这个目标可以在这里找到:
objective-c - Obj-C 设计模式:并行任务启动器
我目前有一个 shell 脚本,它在 GraphicsMagick 的帮助下一个接一个地处理许多图像。它工作正常,所有计算都是正确的,一切正常。(这不是一个“简单”的脚本,它涉及从 JSON 文件读取尺寸,根据许多约束转换一堆图像)。
当我们使用双核或四核计算机时,我想并行化它。由于我是一名 iPhone 开发人员,喜欢向自己介绍 Mac 开发,我想使用“命令行工具”模板使用 XCode 和 Objective-C 创建它。
到目前为止一切顺利,但现在我面临着“任务调度程序”对象的设计。在运行循环中,在单独的线程中,使用块,使用或不使用 GCD,使用或不使用 ARC 之间运行 NSTasks 之间,我相当迷失。
一个人将如何实现这一目标?我正在考虑使用简单的线程来生成 NSTask,让它们在完成时报告,并通知我的调度员的委托,以便它可以升级其进度条。但我真的很想与 Grand Central Dispatch 取得联系。有没有人对做什么和不做什么有任何想法、想法和建议?
编辑:我正在阅读 Apple 的文档,并找到了 NSOperationQueue 类。难道这正是我在这里需要的吗?
cocoa - 如何检查 NSFileHandle 是否有可用数据?
我正在使用 NSTask,配置了 3 个 NSPipe,并希望从标准输出和标准错误中读取。我在里面做——第一个是标准输出,下一个是标准错误。我不能使用 readInBackgroundAndNotify 和 waitForDataInBackgroundAndNotify,因为我的代码已经在单独的线程中运行,我不想在那里运行 NSRunLoop 并分离新的后台线程......但是同时读取 - stdout 和 stderr 在没有时会导致可用数据挂起这些通道之一中存在的数据。
所以我使用这段代码:
但是,当 isReadable 返回 YES 并且我调用 [fileHandle availableData] 时,我的线程仍然阻塞。为什么?当 isReadable 返回 YES 时,我希望在没有阻塞的情况下调用 availableData 方法。
objective-c - NSTask 阻塞主线程
我正在使用 NSTask,但是当我启动任务时,它会阻塞主线程(所以我无法更新它),直到任务结束。这是我的代码:
我一直在阅读-waitUntilExit
确实阻塞了主线程,但我没有使用它,所以我不知道我做错了什么。
cocoa - 如何在 Lion 上使用 NSTask 在 Preview 中打开 pdf/jpg?
我有以下代码在雪豹上运行良好。它使用首选应用程序打开存储在临时目录中的文件。
但它在 Lion 上根本不起作用。它导致以下错误和预览(以及文本编辑)显示错误对话框。其他编辑器运行良好(例如 TextMate)。
我发现了许多提示如何使用 Preview 和 TextEdit 修复 Lion 问题,描述如何更改~/Library/Containers的权限,但这并没有解决从 Cocoa 打开文档的问题。
Preview 和 TextEdit 在使用 finder 时可以毫无问题地打开同一个文件,也可以在发出命令open -a "/Applications/Preview.app/Contents/MacOS/Preview" pathToFile时使用 NSTask ,但这对我来说还不够好,因为我需要找出应用程序何时关闭并立即打开。
有人可以指点我正确的方向吗?我已经在这个问题上花费了 2 天时间。非常感谢!
cocoa - 发送 ETX 到 NSTask
我有一个 NSTask 正在执行我编写的另一个程序。在该命令行程序中,它期望 ETX(control-C,或 ASCII 值 3)暂停其中一个进程并调用另一个函数。我怎样才能发送这个?我知道我正在正确发送命令,因为该程序与我迄今为止发送的每个命令交互,除了 ETX。我正在使用以下代码,但它不起作用:
macos - 当您的代码作为 LaunchDaemon 运行时,如何在不重新启动的情况下首次启动 LaunchAgent?
我有一个 LaunchDaemon。当它运行时,它会检查是否安装了 SIMBL。如果没有安装 SIMBL,它会使用 NSTask 在 SIMBL.pkg 上运行 /usr/sbin/installer。
SIMBL 的 postflight 脚本然后尝试运行 launchctl load 命令以立即启动 SIMBL 的 LaunchAgent:
这失败了,因为我的 LaunchDaemon 的 NSTask 环境没有设置 $USER 。
如果我让我的守护进程使用系统配置框架检测当前用户并使用 setEnvironment 将其传递给 NSTask,launchctl 会在我身上出现错误:
我意识到,根据定义,守护进程不应该在用户会话中运行。出于同样的原因,Apple 似乎推荐 LaunchAgents 作为 LaunchDaemons 的辅助对象,以完成用户会话工作。有没有办法让这样的代理立即启动并运行?
我将所有 .plist 都放在正确的位置(它们在重新启动后开始运行,下次 launchctl 进行常规加载)所以我的第一个想法就是告诉 launchctl 重新加载。但是所有执行此操作的代码都在 launchctl.c 中注释掉了:
...