有什么方法可以从iPhone上的标准input读取,无论是硬件或模拟器?
当我从XCodedebuggingOSX应用程序时,我可以从XCodedebugging控制台与应用程序的控制台进行通信 – 例如,应用程序可以将printf()
为stdout
并显示在XCodedebugging控制台上,我的应用程序可以调用fgets()
在我可以在XCodedebugging控制台中键入input的stdin
上。
看起来像XCode,当debuggingiOS的iPhone应用程序,挂钩stdout
( printf()
等等工作正常),但不是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服务器从此连接浏览器)