Я использую C в Objective C, и я хочу захватить stdout
на UIView
с консоли. Вот строка, я говорю:Захват stdout в Objective C
print(stdout, v=toplevel_eval(v));
Я использую C в Objective C, и я хочу захватить stdout
на UIView
с консоли. Вот строка, я говорю:Захват stdout в Objective C
print(stdout, v=toplevel_eval(v));
Другие, чем вы пишете в CI не имеют ни малейшего представления о том, как много вы знаете о C, «Unix» и какао I/O - поэтому некоторые из этого вы можете уже знаем.
Это одно возможное решение, оно выглядит сложнее, чем оно есть.
Reading:
pipe
, dup2
и read
.dispatch_async
и как получить очередь GCD.dup2
часто используются вместе с fork
и exec
для запуска процесса и записи/чтения/чтения стандартного ввода-вывода процесса. То, что вы будете делать, использует одни и те же основные идеи, поэтому поиск примеров этого общего шаблона поможет вам понять, как работают эти вызовы. Вот несколько заметок из университета: Pipe, Fork, Exec and Related Topics.Outline:
Использование dispatch_async
расписание блок для обработки чтения и записи данных. Блок будет:
pipe
Чтобы создать канал и dup2
Для подключения стандартного вывода - файловый дескриптор 1 - это.read
для получения доступных данных из трубы. Чтение данных будет в байтовом массиве.NSString
dispatch_async
указав основную очередь.Все. Теперь ваш блок будет выполняться одновременно в фоновом режиме, записывая все, что ваш C-код записывает на стандартный вывод и добавляет его в ваше представление.
Если вы застряли, вы можете задать новый вопрос, содержащий код, который вы написали, и описание того, что не работает.
HTH