【问题标题】:How to execute a command line in iPhone?如何在 iPhone 中执行命令行?
【发布时间】:2015-12-03 00:49:52
【问题描述】:

我想在 iPhone iOS 中使用 Xcode 目标 C 项目执行命令行,我使用了 system() 函数但它不起作用!

我在我的越狱 iPhone 上安装了ssh 并检查了该应用程序, 我在我制作的应用程序中编写了这段代码

system('id > /tmp/id');

安装并执行软件后,/tmp/id 中没有文件。

我该如何解决这个问题?如果在 Swift 中帮助我也没有任何问题,我只是想执行一个命令行。

【问题讨论】:

    标签: ios iphone command-line jailbreak


    【解决方案1】:

    您可以尝试使用NSTask

    使用 NSTask 类,您的程序可以将另一个程序作为子进程运行,并可以监视该程序的执行。

    类似这样的:

    let task = NSTask()
    task.launchPath = "/bin/bash"
    task.arguments = ["arg1", "arg2", "arg3"]
    

    【讨论】:

    • 感谢您的回答,我在第一行代码中使用了此代码和“import Foundation”,但它仍然给我错误:Use of unresolved identifier 'NSTask',我错过了什么吗?我认为它只适用于 mac os x,而不适用于 ios
    • 你说得对,NSTask 仅适用于 Mac OS。如果不越狱,您将无法在 iOS 上从命令行执行任何操作。
    • 我的手机越狱了,如何执行命令行?我在 object-c 中使用了system()execv(),但还是不行!
    【解决方案2】:

    您的代码使用 system 函数应该可以正常工作,但有一些问题:

    1) 如果它是 Xcode 项目,即使在越狱的 iPhone 中也会被沙盒化,因此您的应用将无法写入“/tmp”。请改用应用的可写路径。

    2) 在任何情况下,调用 system() 时都应该使用可执行文件的绝对路径,例如:

    system('/usr/bin/id > /tmp/id');
    

    【讨论】:

    • 谢谢,可以告诉我应用的可写路径是什么?
    • 如何关闭沙盒并使用system('/usr/bin/id > /tmp/id')?我看到 iphone 有 ssh 软件,它是如何工作的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多