@wangxiaoning wrote:
需求: 在iOS代码中使用system指令,如何获取返回结果,比如
system("ls")
比如执行完
ls
指令iPhone813:/ root# ls Applications Developer Library System User bin boot cores dev etc lib mnt ppuntether private sbin tmp usr var
怎么通过代码获取到
Applications Developer Library System User bin boot cores dev etc lib mnt ppuntether private sbin tmp usr var
这些内容下面这这段是我在网上找的执行系统指令的代码,但是全部都没有拿到返回值
- 互联网
- (NSString *)cmd:(NSString *)cmd { // 初始化并设置shell路径 NSTask *task = [[NSTask alloc] init]; [task setLaunchPath: @"/bin/bash"]; // -c 用来执行string-commands(命令字符串),也就说不管后面的字符串里是什么都会被当做shellcode来执行 NSArray *arguments = [NSArray arrayWithObjects: @"-c", cmd, nil]; [task setArguments: arguments]; // 新建输出管道作为Task的输出 NSPipe *pipe = [NSPipe pipe]; [task setStandardOutput: pipe]; // 开始task NSFileHandle *file = [pipe fileHandleForReading]; [task launch]; // 获取运行结果 NSData *data = [file readDataToEndOfFile]; NSLog(@"%@", data); NSLog(@"[[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; %@", [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]); return [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; }
- 狗神的帖子
#import <spawn.h> extern char **environment; void run_cmd(const char *cmd) { pid_t pid; const char *argv[] = {"sh", "-c", cmd, NULL}; int status; status = posix_spawn(&pid, "/bin/sh", NULL, NULL, (char* const*)argv, environment); if (status == 0) { if (waitpid(pid, &status, 0) == -1) { perror("waitpid"); } } } void your_function(void) { run_cmd("reboot"); }
- unix
system()
Posts: 5
Participants: 2