有什么方法可以从iPhone上的标准input读取,无论是硬件或模拟器?

当我从XCodedebuggingOSX应用程序时,我可以从XCodedebugging控制台与应用程序的控制台进行通信 – 例如,应用程序可以将printf()stdout并显示在XCodedebugging控制台上,我的应用程序可以调用fgets()在我可以在XCodedebugging控制台中键入input的stdin上。

看起来像XCode,当debuggingiOS的iPhone应用程序,挂钩stdoutprintf()等等工作正常),但不是stdin

有没有人在iOS / iPhone上使用stdin ? 这在debugging过程中非常有用 – 即使是iOS Cocoa应用程序也是如此。 我可以用一些更复杂的方式来处理这个问题,比如使用套接字,但是我只想让XCode为我做这个。

更新:

那么,这将解释它。 iOS模拟器实际上为stdin打开/dev/null 。 有可能找出stdout要去哪里(通常是/dev/ttys00X ),然后用O_RDONLY重新打开并将其分配给stdin。 这适用于iOS模拟器,但它看起来像串行连接到iPhone硬件的线路是错误的 – 您可以继续在Xcodedebugging控制台inputinput,它永远不会被发送到iPhone硬件(和您的程序运行在iPhone上硬件将只是坐着等待的东西显示在stdin又名/dev/ttys00X )。

我不知道有什么办法可以使iPhone硬件的工作?

我没有解决这个确切的问题,这是很有可能的,没有办法做到这一点。 我有一个替代的build议。 我在我的一个项目中使用它,它工作得很好。

我使用AsyncSocket库来实现一个微型TCP服务器,我可以使用telnet连接到我的应用程序。 这种方法有几个优点:

  • 你不必在debugging器下运行
  • 该应用程序可以从任何电脑访问
  • 可以在别人的手机上访问应用程序(在团队中时很方便)
  • 它可以编写脚本(可以批量处理多个命令)
  • 可扩展(易于使HTTP服务器从此连接浏览器)