Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2009-07

a few AssignStream questions

2 messages · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Seth Grover

http://community.freepascal.org:10000/docs-html/rtl/unix/assignstream.html

A few questions about AssignStream:

1. I can't seem to figure out a way to see if the program I ran actually executed. For example, if I pass in something bogus for the Prog parameter (some filename that doesn't even exist), I still get a PID back. It's just that the PID is in a defunct (zombie) state. I could read the status file in /proc/ for that PID, but that seems rather a waste to do with each program I execute via AssignStream.

2. Is there a way for me to get the exit code of a program executed with AssignStream?

Thanks,

Seth

This email is fiction. Any resemblance to actual events or persons living or dead is purely coincidental. Seth Grover sethdgrover[at]gmail[dot]com
Seth Grover
to Seth Grover

I actually figured out the answer to both my questions, which I'll post here in case somebody is ever searching these archives and has the same question:

Immediately after calling AssignStream and getting the resultant PID, you can do something like this:

// check to see if the PID has already exited
if (fpWaitPid(pid,pcint(@exitCode),WNOHANG) = pid) then begin
  // a 127 exit code indicates "command not found
  if (wexitstatus(exitCode) = 127) then begin
    raise Exception.Create('PipelineClass.Create: Command not found in PATH');
  end;
end;

Apparently the exit code "127" has a special meaning indicating that the command was not found.

-SG

This email is fiction. Any resemblance to actual events or persons living or dead is purely coincidental. Seth Grover sethdgrover[at]gmail[dot]com On Mon, Jul 27, 2009 at 6:07 AM, Seth Grover wrote: > http://community.freepascal.org:10000/docs-html/rtl/unix/assignstream.html > > A few questions about AssignStream: > > 1. I can't seem to figure out a way to see if the program I ran > actually executed. For example, if I pass in something bogus for the > Prog parameter (some filename that doesn't even exist), I still get a > PID back. It's just that the PID is in a defunct (zombie) state. I > could read the status file in /proc/ for that PID, but that seems > rather a waste to do with each program I execute via AssignStream. > > 2. Is there a way for me to get the exit code of a program executed > with AssignStream? > > Thanks, > > Seth > > -- > This email is fiction. Any resemblance to actual events > or persons living or dead is purely coincidental. > > Seth Grover > sethdgrover[at]gmail[dot]com >