On Wed, 8 Jun 2011 12:58:55 +0200 (CEST) mar...@stack.nl (Marco van de Voort) wrote:
> In our previous episode, Mattias Gaertner said: > > > I don't know if it exist a FPC function for that. > > > > > > i'll do an external commad like " ps -ef | grep bash | grep -v grep | awk > > > '{print $8}'". > > > > Thanks, I knew that. > > I prefer a more direct way - for example via a sysctl. > > > > I need to check under BSD if a PID is running and what name it has. > > Is there already a function for that? > > 2.5.1 since r17692 try this: > > uses freebsd,baseunix,sysutils; > > var pid : pid_t; > s: ansistring; > begin > pid:=strtointdef(paramstr(1),-1); > writeln('pid (-1 for current):',pid); > // loads name of process + args with #0's inbetween. > if kernproc_getargs(pid,s)<>-1 then // does not work with -1 > writeln('arguments:',s) > else > writeln('error fetching arguments:',fpgeterrno); > > // loads full path of running binary > if kernproc_getpath(pid,s)<>-1 then // -1 means own process > writeln('arguments:',s) > else > writeln('error fetching path:',fpgeterrno); > end. > > See the implementation of the above procedures in freebsd.pas for more info, > note that the kern_proc_* values were also updated in sysctl. Thanks a lot. This solution is only for FreeBSD. What about the other BSD flavors? What about darwin? Mattias _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal