[erlang-questions] "Port reading stdout from external program"
Alex Feng
sweden.feng@REDACTED
Wed Nov 16 20:06:03 CET 2016
Hi,
I am using an port to communicate with an external program, I would like to
fetch each output from the external problem.
But I have problem to fetch the output when the external problem runs into
waiting input," scanf " for example.
Here is an example to communicate with a simple C program.
I need to fetch the prompt line("Please input you name") from Port in order
to interact with C code, but with "scanf" added in C code, I couldn't
fetch it from Port.
Does anyone know why is that ? Any advice and suggestions will be greatly
appreciated.
Erlang code:
read() ->
Port = open_port({spawn, "/home/erlang/test/a.out"}, [binary, {line,
255}]), %binary,{line, 255}
io:format("Port: ~p~n",[Port]),
do_read(Port).
do_read(Port) ->
receive
{Port,{data,Data}} ->
io:format("Data: ~p~n",[Data]);
Any ->
io:format("No match fifo_client:do_read/1, ~p~n",[Any])
end,
do_read(Port).
C code:
int main()
{
char str[10];
printf("Please input you name:"); //Prompt line
scanf ("%9s",str); // with this line, port can not read the output from
this program.
return 1;
}
Br,
Alex
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20161116/ac1253ec/attachment.htm>
More information about the erlang-questions
mailing list