I tried a simple echo.c program:<br><br>#include <sys/types.h><br>#include <sys/uio.h><br>#include <unistd.h><br><br><br>int main() <br>{<br>    char readBuff[1024];<br>    int numRead = 0;<br>    <br>    while ((numRead = read(0, readBuff, 1024)) > 0)<br>
    {<br>        write(1, readBuff, numRead);<br>    }<br>    <br>    return 1;<br>}<br><br>It seems that read returns with 0 immediately and the program exits. Is this suppose to happen?<br><br><br><br>Sergej<br><br><br>
<br><div class="gmail_quote">On Sat, Oct 25, 2008 at 11:05 AM, Rapsey <span dir="ltr"><<a href="mailto:rapsey@gmail.com">rapsey@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
What is the difference for the program that communicates using stdin and stdout, if it is opened using open_port from within erlang or with unix pipes?<br>I'm trying to use open_port with ffmpeg, this works just fine for instance:<br>

<br>cat blabla.mp3 | /opt/local/bin/ffmpeg -f mp3 -i - -acodec libfaac -f flv -  > dan.flv<br><br>But if I use open_port:<br>{ok, Bin} = file:read_file("blabla.mp3"),<br>Port = open_port({spawn, "/opt/local/bin/ffmpeg -f mp3 -i - -acodec libfaac -f flv -"}, [binary, use_stdio, stream]),<br>

<<Data:128000/binary, Remain/binary>> = Bin,<br>Port ! {Port {command, Data}}<br><br>ffmpeg call will fail with:<br>pipe:: Error while opening file<br><br><br><br>/Sergej<br>
</blockquote></div><br>