Usando el flujo estándar de io: stdin y stdout en un exe matlab

Pregunta

Quiero que 'escuche' el flujo de entrada estándar en un ejecutable Matlab (compilado).

Así es como creo que se hace en.c o un lenguaje similar:

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

O más elaboradamente, se puede utilizar como tal:

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

Responder

Para completar, dejaré el fondo y las notas intactos, pero con la ayuda de Amro y EitanT he logrado resolverlo.

Fondo

He encontrado cómo hacer esto en otros idiomas, yaquí Algunas instrucciones para el proceso de compilación.

Sin embargo, no he encontrado en ninguna parte cómo "escuchar" la entrada en Matlab. Lo más cerca que he venido esesta descripcion de I-like IO en Octave, pero no puedo avanzar con esto mientras busco una solución en MATLAB.

Tenga en cuenta que no es posible modificar o envolver el programa que envía los datos a través del flujo, y que preferiría una solución MATLAB pura en lugar de envolver todo el programa. Si tuviera que llamar a una función trivial de MATLAB en un idioma diferente, estaría bien.

¿Qué he intentado?

Lo intenté algunas funciones de la ventana de comandos comofgets(0) (fid = 0 parece ser la id correspondiente astdin (según lo mencionado por @EitanT y visto al intentarfopen(0))) pero solo devuelve:

Operation is not implemented for requested file identifier.

También he considerado Usando la opción en MATLAB para invocar comandos del sistema o ejecutarjava / perl Manda, pero hasta ahora sin suerte. Tampoco estoy seguro de si seguirían funcionando después de la compilación.

Además intenté usarinput('prompt','s') Esto funciona cuando abro el programa a través decmd, pero no hace nada hasta que pulsa enter. (Lo que el programa que escucho, por supuesto, nunca funcionará, en el mejor de los casos que pueda obtener\n al final de cada línea).

También probé waitinput desdeIntercambio de archivos pero creo que este es un callejón sin salida, ya que no atrapó nada y parece funcionar bastante mal.

Notas

Estoy usando Windows 7 y MATLAB 2012b.encontrépopen en el intercambio de archivos pero eso no parece estar disponible para Windows.Cuando simplemente escribo algo como'show me' esto se envía correctamente al flujo de salida estándar.

Respuestas a la pregunta(2)

Su respuesta a la pregunta