- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 NSTask 来运行交互式的 cli 应用程序。我用它通过 USB 连接提取数据。
我正在打开一个带有大纲和错误管道的 NSTask,但是当我发出命令时,它可以工作,但会在循环中旋转沙滩球,从输出中提取数据。
我希望能够混合执行帮助命令的 - (IBAction)clicked:(id)sender 按钮并获取输出:
NSTask *usbCommandTask;
NSPipe *outPipe;
NSPipe *inPipe;
NSPipe *errorPipe;
NSFileHandle *inFile;
NSFileHandle *outFile;
NSTimer *pollTimer;
dispatch_queue_t mtpTask;
@implementation AppDelegate
- (void)commandNotification:(NSNotification *)notification
{
NSData *data = nil;
while ((data = [outFile availableData]) && [data length]){
NSString *myString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Data: %@",myString);
}
NSLog(@"Execution never gets here");
}
-(void)checkTask
{
if(usbCommandTask){
if([usbCommandTask isRunning])NSLog(@"Task running"); else NSLog(@"Task dead");
} else NSLog(@"Task is nil");
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
usbCommandTask = [[NSTask alloc] init];
[usbCommandTask setLaunchPath:@"/Applications/usb-debugger-cli"];
[usbCommandTask setCurrentDirectoryPath:@"/"];
[usbCommandTask setArguments:[NSArray arrayWithObject:@"-i"]];
inPipe = [NSPipe pipe];
[usbCommandTask setStandardInput:inPipe];
outPipe = [NSPipe pipe];
[usbCommandTask setStandardOutput:outPipe];
errorPipe = [NSPipe pipe];
[usbCommandTask setStandardError:errorPipe];
outFile = [outPipe fileHandleForReading];
inFile = [inPipe fileHandleForWriting];
[outFile waitForDataInBackgroundAndNotify];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(commandNotification:)
name:NSFileHandleDataAvailableNotification
object:nil];
pollTimer=[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(checkTask) userInfo:nil repeats:TRUE];
[usbCommandTask launch];
NSLog(@"Launched");
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
// Insert code here to tear down your application
if(usbCommandTask)[usbCommandTask terminate];
}
- (IBAction)clicked:(id)sender {
if(usbCommandTask){
NSString *command=@"help\n";
NSData *commandData=[NSData dataWithBytes:command.UTF8String length:command.length];
[inFile writeData:commandData];
}
else
{NSLog(@"Comamnd task dead");
}
}
最佳答案
[outFile availableData]
实际上是一个阻塞调用,没有数据或显式 EOF,所以这将始终阻塞,而不是我使用:
data = [outFile availableData];
NSString *myString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Data: %@",myString);
[outFile waitForDataInBackgroundAndNotify];
关于cocoa - 使用 NSTask 交互式访问命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42772624/
我正在尝试在存档之前将 Mac 的地址簿复制到保存位置。这是我的代码: // whoami let whoam : NSTask = NSTask()
我正在将 ASIHTTPRequest 集成到我的应用程序中,并包含一些在 XCode 中找到的受支持的框架,但在此 API 的一个文件中,我在此声明中收到错误“NSTask 未声明”...NSTas
昨天我read somewhere that NSTask isn't thread safe这让我很困扰,因为我在 NSThread 中运行 NSTask,并且到目前为止还没有遇到任何线程问题。 我
我有一个可以通过此终端命令导入 XML 文件的应用程序: open /path/to/main\ app.app --args myXML.xml 这非常有效,没有任何问题。我已经使用 Applesc
我正在尝试学习以任务进程可以接受输入文件重定向作为参数的方式编写NSTask。在传统的 unix system() 命令中,这对代码来说是微不足道的,但对于我的应用程序的需求来说,其可控性还远远不够。
我正在尝试使用 NSTask 运行 UNIX 'apropos' 命令。这是我的代码: NSTask *apropos = [[NSTask alloc] init]; NSPipe *pipe =
我正在使用 NSTask 来获取/usr/bin/man 的输出。我得到了输出,但没有格式化(粗体、下划线)。应该看起来像这样: 粗体带有下划线的文本 (请注意,斜体文本实际上带有下划线,只是此处没有
假设一个基于 Cocoa 的沙盒应用程序生成了一个 SSH 实例。到目前为止一切顺利,SSH 进程正在启动。 问题是,如何允许子进程读取文件(例如 ~/.ssh/config 或 ~/.ssh/kno
此代码用于获取进程的标准输出 NSTask * task; NSPipe * pipe; NSFileHandle * fileHandle;
我在执行不同的 NSTask 时遇到问题。相同的launchPath,不同的参数。我有一个类,其实例管理自己的 NSTask 对象,并根据参数初始化这些实例 - 正在创建依赖的 NSTask 对象。我
我收到了一份来自 NSTask 的 -launch 崩溃现场的报告。 有问题的代码是: NSTask *task = [[NSTask alloc] init]; [task setLaunchPat
我正在编写一个任务来访问 OpenSSL 二进制文件。如果我复制/粘贴不带单引号的命令,那么它在终端中可以完美运行。 我不断将引用粘贴到命令中。这是代码/错误... let keySizeValue
在 NSTask 的源代码中,我在 waitUntilExit 方法中发现了一个有趣的地方: - (void) waitUntilExit { NSTimer *timer = nil;
我正在使用 NStask 来获取文件夹大小。它对于普通文件路径(如 home/ABC/Users/testUser/Documents)工作正常。但它没有显示 home/ABC/Users/testU
OS X 10.6.8、Carbon、C++ 应用。 我想从 shell 运行命令并以字符串形式返回结果,然后用作另一个函数的参数。 df/|尾-n +2 | awk '{ print $1 }' 但
我使用 NSTask 和 setStandardOutput 将命令行工具的标准输出重定向到我的程序,以便我可以使用它进行处理。这很好用,但作为一个副作用,当我运行程序时,工具的输出显示为输出。我想完
我正在尝试使用 NSTask 将二进制 plist 转换为 xml,尽管遇到了一个我不太理解的错误。如果我将命令 NSTask 失败并将其复制到命令行,它就可以正常工作。希望有人能告诉我出了什么问题。
我需要使用 NSTask 按顺序运行多个命令,并且想知道什么是判断任务是否已完成的好方法,以便我可以继续执行下一个命令。我正在使用“sox”(我将其包含在我的应用程序包中)使用输入音频文件创建临时音频
这个问题已经有答案了: NSTask NSPipe - objective c command line help (2 个回答) 已关闭2 年前。 我使用 NSTask 如下: NSTask
我正在使用 NSTask 在 Cocoa 中执行可执行文件。可执行文件正在创建文件。 有什么方法可以找出该可执行文件在执行过程中创建了哪些文件? 谢谢。 最佳答案 Instruments 中有一个工具
我是一名优秀的程序员,十分优秀!