美文网首页MacOS开发 技术集锦Mac OS开发
NSTask介绍,指令、调用外部程序

NSTask介绍,指令、调用外部程序

作者: 邹四木 | 来源:发表于2017-11-07 11:03 被阅读38次

简介

  • 首先不懂的同学可能想知道NSTask是干嘛的?简单说NSTask对象的作用是启动外部进程、调用外部命令,在C#中类似于Process
  • 其次NSTask可以创建一个当前线程的子进程对象,运行另一个程序,并监视该程序的执行(使用NSPipe,NSFileHandle接收结果)。并且不会与创建它的进程共享内存空间。
  • 进程在运行中不能更改
  • Swift中NSTask更名为Process
  • 你想要运筹帷幄之中,决胜千里之外,NSTask会是你的得力助手

常用方法及属性

@property (nullable, copy) NSString * launchPath设置调用路径
@property (nullable, copy) NSArray<NSString *> *arguments;设置调用参数(被调用程序命令)
标准输入\输出通道,用NSFilehandle或者NSPipe设置接受
@property (nullable, retain) id standardInput;输入信息
@property (nullable, retain) id standardOutput;输出
@property (nullable, retain) id standardError;错误输出

设置输出接受handle
    NSPipe *pipe = [NSPipe pipe];
    [certTask setStandardOutput:pipe];
    [certTask setStandardError:pipe];
    NSFileHandle *handle = [pipe fileHandleForReading];

NSString *securityResult = [[NSString alloc] initWithData:[handle readDataToEndOfFile] encoding:NSASCIIStringEncoding];
//函数输出结果

- (void)launch;开始执行线程(一个线程只能执行一次,之后的调用都会抛出错误异常)
@property (readonly, getter=isRunning) BOOL running;运行状态,是否在运行
@property (readonly) int terminationStatus; 退出状态(判断命令执行是否成功完成)

用法

1.解压缩

终端用法$unzip -q filepath -d despath
使用NSTask在Mac上调用:

    NSTask *unzipTask = [[NSTask alloc] init];
    [unzipTask setLaunchPath:@"/usr/bin/unzip"];
    [unzipTask setArguments:[NSArray arrayWithObjects:@"-q", @"~\***.IPA", @"-d", @"~\unzipdirectory", nil]];
    [unzipTask launch];

这样就完成了调用unzip解压一个IPA 到指定路径的命令调用

2.读取签名证书列表

终端命令为$security find-identity -v -p codesigning

    NSTask *certTask = [[NSTask alloc] init];
    [certTask setLaunchPath:@"/usr/bin/security"];
    [certTask setArguments:[NSArray arrayWithObjects:@"find-identity", @"-v", @"-p", @"codesigning", nil]];
    NSPipe *pipe = [NSPipe pipe];
    [certTask setStandardOutput:pipe];
    [certTask setStandardError:pipe];
    NSFileHandle *handle = [pipe fileHandleForReading];
    [certTask launch];

暂时写这么多,后续空下来继续更新

相关文章

  • NSTask介绍,指令、调用外部程序

    简介 首先不懂的同学可能想知道NSTask是干嘛的?简单说NSTask对象的作用是启动外部进程、调用外部命令,在C...

  • Mac OSX 开发入门基础系列之NSTask

    利用NSTask,我们可以在应用中调用外部程序或脚本并获得它的<执行状态和结果NSTask最为常用的一个场景是为命...

  • 基于xcrun的工程构建

    1.使用NSTask调用shell

  • h5唤醒支付宝小程序并传参

    小程序scheme链接介绍 外部 APP/浏览器 唤起小程序,需要通过 scheme 调用,在 scheme 中可...

  • ARM System Developer's Guide 学习笔

    分支指令(Branch Instructions) 分支指令改变程序执行的流程或用来调用子程序,这种类型的指令允许...

  • PHP 调用Python脚本

    1. PHP如何调用外部程序 首先要解决的问题就是php如何调用python脚本,在PHP中调用外部程序主要有两个...

  • 函数调用栈

    程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续...

  • QT调用外部程序

    1、通过调用Linux C 函数 system("calc.exe"); 2、通过QProcess 阻塞调用 ...

  • iReSign源码分析

    启动之后首先会去查询可用的签名证书,这里用到了NSTask,NSTask是可以在APP里调用终端命令的。而终端是另...

  • 计算机基础知识

    首先介绍计算机的组成: 一.硬件系统 一)输入设备 输入设备可以将外部信息(如文字/数字/声音/图像/程序/指令等...

网友评论

    本文标题:NSTask介绍,指令、调用外部程序

    本文链接:https://www.haomeiwen.com/subject/georpxtx.html