I am trying to use the "Popen" function in Read mode. I first tried the example (---Write---) from the manual (see beneath). The POpen gives an error 25 (Not a typewriter) but it looks like it works. I try to do almost the same (---Read---)to read the output, but I cannot get this to read anything. As far as I can tell, the script is not executed. Dos anybody have a hint.
Carsten Program output is beneath ">>>>>>>>>" ------------------Write-------------------------- Program Example37 ; {Program to demonstrate the Popen function.} uses BaseUnix,Unix; var f:text; i:longint; begin writeln('Creating a shell script to which echoes its arguments '); writeln('and input back to stdout'); assign (f,'test21a.sh'); rewrite(f); writeln(f,'#!/bin/sh'); writeln(f,'echo this is the child speaking . . . . '); writeln(f,'echo got arguments\*"$*"\*'); writeln(f,'cat') ; writeln(f,'exit 2'); writeln(f); close(f); fpchmod('test21a.sh',&755); popen(f,'./test21a.sh arg1 arg2','W') ; if fpgeterrno <>0 then writeln('error from POpen: errno: ',fpgeterrno); for i :=1 to 10 do writeln(f,'This is written to the pipe , and should appear on stdout.' ) ; Flush(f); Writeln('The script exited with status :',PClose(f)); writeln; writeln('Press < return > to remove shell script. '); readln; assign(f,'test21a.sh'); erase(f); end. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Creating a shell script to which echoes its arguments and input back to stdout error from POpen: errno: 25 this is the child speaking . . . . got arguments*arg1 arg2* This is written to the pipe , and should appear on stdout. This is written to the pipe , and should appear on stdout. This is written to the pipe , and should appear on stdout. This is written to the pipe , and should appear on stdout. This is written to the pipe , and should appear on stdout. This is written to the pipe , and should appear on stdout. This is written to the pipe , and should appear on stdout. This is written to the pipe , and should appear on stdout. This is written to the pipe , and should appear on stdout. This is written to the pipe , and should appear on stdout. The script exited with status :2 Press < return > to remove shell script. -------------------------- ----- Read--------------------------------- Program Example37 ; {Program to demonstrate the Popen function.} uses BaseUnix , Unix, errors; {System} var f:text; i:longint; s:string[255]; begin writeln('Creating a shell script to which echoes its arguments '); writeln('and input back to stdout'); assign (f,'test21a.sh'); rewrite(f); writeln(f,'#!/bin/sh'); writeln(f,'echo this is the child speaking . . . . ' ) ; writeln(f,'echo got arguments\*"$*"\*'); writeln(f,'echo got arguments\*"$*"\* >m'); writeln(f,'exit 3'); writeln(f); close(f); fpchmod('test21a.sh',&755); popen(f,'./test21a.sh arg1 arg2','R') ; if fpgeterrno <>0 then writeln('error from POpen: errno: ',StrError(fpgeterrno)); for i :=1 to 10 do begin Readln(f,s); writeln(s); end; Writeln('The script exited with status :' ,PClose(f)); writeln; writeln('Press < return > to remove shell script. '); readln ; assign (f,'test21a.sh'); erase(f); end. >>>>>>>>>>>>>>>>>>>>>>>>>>>> Creating a shell script to which echoes its arguments and input back to stdout error from POpen: errno: Not a typewriter The script exited with status :127 Press < return > to remove shell script. --------------------------------------------------- _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal