Использование стандартного потока io: stdin и stdout в exe matlab

Вопрос

Я хочу, чтобы он «слушал» стандартный поток ввода в исполняемом (скомпилированном) исполняемом файле Matlab.

Вот как я считаю, что это сделано вc или похожий язык:

#include stdio.h
fgets(line, 256, stdin)

Или более подробно, это может использоваться как таковое:

if (!fgets(line, 256, stdin))
    return;
if (line[0] == '\n')
    continue;
sscanf(line, "%s", command);

Ответ

Для полноты картины я оставлю фон и заметки нетронутыми, но с помощью Amro и EitanT мне удалось это решить.

Фон

Я нашел, как это сделать на других языках, иВот некоторые инструкции для процесса компиляции.

Однако я нигде не нашел, как «прослушать» входные данные в Matlab. Самое близкое, что я пришел, этоэто описание C-like IO в Octave, но я не могу добиться прогресса в этом, так как я ищу решение в MATLAB.

Обратите внимание, что изменить или обернуть программу, которая отправляет данные через поток, невозможно, и что я предпочел бы чисто решение MATLAB, а не обертывание всей моей программы. Если бы я вызывал тривиальную функцию из MATLAB на другом языке, это было бы нормально.

Что я пробовал?

Я пытался несколько функций из окна команд, таких какfgets(0) (fid = 0 кажется, идентификатор, соответствующийstdin (как упомянуто @EitanT и видно при попыткеfopen(0))) но это просто возвращает:

Operation is not implemented for requested file identifier.

Я также рассмотрел использование опции в MATLAB для вызова системных команд или выполненияjava / perl команды, но пока без везения. Я также не уверен, будут ли они работать после компиляции.

Кроме того, я попытался использоватьinput('prompt','s') это работает, когда я открываю программу черезcmd, но ничего не делает, пока не нажму ввод. (Что программа, которую я слушаю, конечно, никогда не будет делать, в лучшем случае я могу получить\n в конце каждой строки).

Я тоже опробовал waitinput изОбмен файлами но я думаю, что это тупик, поскольку он ничего не поймал и, кажется, работает довольно плохо.

Примечания

Я использую Windows 7 и MATLAB 2012b.я нашелpopen на обмен файлами но это, кажется, не доступно для Windows.Когда я просто набираю что-то вроде'show me' это правильно отправляется в стандартный поток вывода.

Ответы на вопрос(2)

Ваш ответ на вопрос