0

我正在尝试通过越狱 iPhone 应用程序中的 C system() 函数进行调用,但它们似乎无法正常工作。我知道这是可能的,因为 Cydia.app 的源代码可以做到这一点,但是当我尝试它时,它什么也没做。

我设置了一个简单的测试,它在 Mac 上运行良好,但在设备上返回为空:

system("cd /bin && ls > /tmp/output.txt");
NSLog([NSString stringWithContentsOfFile:@"/tmp/output.txt" usedEncoding:nil error:nil]);

我通过 XCode 正常安装它。我想我可能需要将它安装在 /Applications 中,但是当我尝试 SSH 并将其安装在 /Applications 中时,它显示在 SpringBoard 中,但拒绝启动。

4

1 回答 1

1
system("cd /bin && ls > /tmp/output.txt");

也许你的 /bin 只是空的,或者你甚至没有一个(我不确定 iPhone 的文件系统是什么样的)。尝试类似的东西echo foo > /tmp/output.txt

那是假设 /tmp 甚至是可写的+存在的。

NSLog([NSString stringWithContentsOfFile:@"/tmp/output.txt" usedEncoding:nil error:nil]);

不要将随机字符串传递给NSLog. 使用格式字符串,即使它只是@"%@",并将字符串对象作为要格式化的项目之一传递给它。

此外,您不应传递nil这些输出参数中的任何一个。如果你真的不关心它是什么编码,你可以传递NULL编码参数,但你应该总是传递一个指针来接受一个错误对象,如果没有别的,框架可以告诉你为什么这不起作用(这个可能是实际的故障点)。

于 2010-11-08T05:30:35.193 回答