一、system语句
原型:system(const char *);
用法:
NSString* str = @"存放你要在终端执行的命令"; const char* cmd = [str UTF8String]; system(cmd); //这里注意,如果你要执行多条命令,分开使用system执行是没有用的 //system("cd /xxx/xxx"); //system("open xxx"); //如果要执行多条命令,如下操作 system("cd /xxx/xxx;open xxx"); //其中的执行语句可以通过NSString字符串操作拼接成命令语句,再强制转换为const char*类型传入system执行
二、NStask
前提:你需要提前知道命令所依据的可执行文件的存放路径
比方说我想调用一个可执行文件symbolicatecrash,并给他传递所需要的参数,用法如下:
//命令:./symbolicatecrash ./test.crash /liveapp.crash > log.crash NSTask *task = [[NSTask alloc] init]; //需要提前知道symbolicatecrash的所在位置 [task setLaunchPath:@"/Users/yewendi/Documents/./symbolicatecrash"];//设置调用路径 NSPipe *pipe = [NSPipe pipe]; [task setStandardOutput:pipe]; NSFileHandle *file = [pipe fileHandleForReading]; //设置参数 [task setArguments:[NSArray arrayWithObjects:@"./test.crash",@"./liveapp.crash",@">",@"log.crash" ,nil]]; [task launch]; //获取返回值并输出 NSData *data = [file readDataToEndOfFile]; NSString *string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; NSLog(@"%@", string);//打印执行输出
如果是执行一些系统自带命令,例子:
[task setLaunchPath:@"/bin/ls"];//设置调用路径 [task setArguments:[NSArray arrayWithObjects:@"-a" ,nil]];
修改一下这两行代码的参数即可。
tips:如果不知道系统调用的可执行文件路径所在,可以在终端输入export,查看PATH,挨个去找一下看看在哪个路径里
如果有不懂的可以评论留言哦~