objective-c – 使用NSWorkspace launchApplicationAtURL启动应用程序后获取退出状态

objective-c – 使用NSWorkspace launchApplicationAtURL启动应用程序后获取退出状态,第1张

概述我是Mac编程的新手.我正在向OSX移植一个插件.我需要我的应用程序启动第二个应用程序(我不控制其来源),然后获取其退出代码. NSWorkspace launchApplicationAtURL非常适合用所需的参数启动它,但我看不到如何获取退出代码.在设置终止第二个应用程序的通知后,有没有办法获得它?我看到了使用NSTask获取退出代码的工具.我应该使用它吗? NSWorkspace方法实际上 我是Mac编程的新手.我正在向OSX移植一个插件.我需要我的应用程序来启动第二个应用程序(我不控制其来源),然后获取其退出代码. NSWorkspace launchApplicationAtURL非常适合用所需的参数启动它,但我看不到如何获取退出代码.在设置终止第二个应用程序的通知后,有没有办法获得它?我看到了使用NSTask获取退出代码的工具.我应该使用它吗?解决方法 NSWorkspace方法实际上是用于启动独立的应用程序;根据文档使用NSTask“将另一个程序作为子进程运行并监视程序的执行情况”.

这是一个简单的方法来启动可执行文件并返回其标准输出 – 它阻止等待完成:

// Arguments://    atPath: full pathname of executable//    arguments: array of arguments to pass,or nil if none// Return://    the standard output,or nil if any error+ (Nsstring *) runcommand:(Nsstring *)atPath withArguments:(NSArray *)arguments{    NSTask *task = [NSTask new];    NSPipe *pipe = [NSPipe new];    [task setStandardOutput:pipe];     // pipe standard output    [task setLaunchPath:atPath];       // set path    if(arguments != nil)        [task setArguments:arguments]; // set arguments    [task launch];                     // execute    NSData *data = [[pipe fileHandleForReading] readDataToEndOffile]; // read standard output    [task waitUntilExit];              // wait for completion    if ([task terminationStatus] != 0) // check termination status        return nil;    if (data == nil)        return nil;    return [Nsstring stringWithUTF8Data:data]; // return stdout as string}

您可能不想阻止,特别是如果这是您的主UI线程,提供标准输入等.

总结

以上是内存溢出为你收集整理的objective-c – 使用NSWorkspace launchApplicationAtURL启动应用程序后获取退出状态全部内容,希望文章能够帮你解决objective-c – 使用NSWorkspace launchApplicationAtURL启动应用程序后获取退出状态所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1070466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存