Есть ли способ чтения из stdin на iPhone, аппаратный или эмулятор? - PullRequest
4 голосов
/ 21 января 2011

Когда я отлаживаю приложение OSX из XCode, я могу связываться с консолью приложения из консоли отладки XCode - например, приложение может printf() до stdout, и это отображается на консоли отладки XCode, и мое приложение можно вызвать fgets() на stdin, в который я могу ввести ввод в консоли отладки XCode.

Похоже, XCode при отладке приложений для iOS на iPhone подключается stdout (printf() и др. Работают нормально), но не stdin?

Кто-нибудь заставил stdin на iOS / iPhone работать? Это было бы чрезвычайно полезно во время отладки - даже с приложением iOS Cocoa. Я мог бы заставить это работать более сложным способом, например с сокетом, но я бы предпочел, чтобы XCode сделал это для меня.

UPDATE:

Ну, это объяснило бы это. Симулятор iOS фактически открывает /dev/null для stdin. Можно выяснить, куда идет stdout (обычно /dev/ttys00X), а затем снова открыть его с помощью O_RDONLY и назначить его в stdin. Это прекрасно работает для симулятора iOS, но похоже, что дисциплина линии для последовательного подключения к оборудованию iphone неправильная - вы можете продолжать вводить данные в консоли отладки xcode, и она никогда не будет отправлена ​​на оборудование iphone (и ваша программа работает) на аппаратном обеспечении iPhone будет просто сидеть и ждать, пока что-то появится на stdin aka /dev/ttys00X).

Интересно, есть ли способ заставить это работать с аппаратным обеспечением iPhone?

1 Ответ

2 голосов
/ 21 января 2011

У меня нет решения этой конкретной проблемы, и вполне возможно, что нет способа сделать это. У меня есть альтернативное предложение. Я использовал его в одном из своих проектов, и он работал довольно хорошо.

Я использовал библиотеку AsyncSocket для реализации сервера микро TCP, к которому я мог подключиться через telnet и установить связь с моим приложением. У этого подхода есть несколько преимуществ:

  • вам не нужно работать под отладчиком
  • приложение доступно с любого компьютера
  • можно получить доступ к приложению на чужом телефоне (удобно, когда в команде)
  • Это сценарий (может пакетировать несколько команд)
  • расширяемый (из этого легко сделать HTTP-сервер для соединения с браузером)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...