Quantcast
Channel: 睿论坛 - 最新话题
Viewing all articles
Browse latest Browse all 5702

iOS通过代码执行系统指令后如何获取执行后结果

$
0
0

@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

Read full topic


Viewing all articles
Browse latest Browse all 5702

Trending Articles