Is there a Lazarus/FPC routine to list the processes running on a Linux system, the equivalent of EnumProcesses + GetCommandLineEx(Pids[x]) on Windows?
Mailing lists / lazarus / 2011-08
How to enumerate list of Linux running processes?
8 messages · 7 people · –
- FFrank Church 2
- Iik 1
- LLudo Brands 1
- MMarco van de Voort 1
- MMark Morgan Lloyd 1
- MMichael Joyner 1
- +1 more
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Frank Church wroteIs there a Lazarus/FPC routine to list the processes running on a Linux system, the equivalent of EnumProcesses + GetCommandLineEx(Pids[x]) on Windows?
There is no cross platform way for that so you either need to list the files in "/proc" (those directories that contain only a number are processes) or parse the output of e.g. "top". "top" itself afaik scans "/proc" as well.
Regards,
Sven
Show quoted text 15 lines
Perhaps parsing the ps output is easier since output is already quite configurable. ps is also parsing /proc.
As long as you stick to linux, this solution can be made portable between the different flavors. Portablility with other unix's is problematic.
Ludo
Ludo Brands wrote 18 lines
ps parses /proc, but some of the command-line options might vary with distro and version. I've used it reasonably successfully on Linux and Solaris, my notes from a Perl script:
# For Linux, ps is normally found in /bin/ps. For Solaris it is probably in # /usr/bin/ps, but we never want to use the Berkeley one in /usr/ucb/ps which
# has neither the --ppid nor the -f option; code below will probably need to # be refined for BSD.
I had my "new" SGI system running IRIX briefly yesterday, and could see numbered entries in /proc. I didn't investigate the content, or what ps was like.
Mark Morgan Lloyd wrote 10 lines
On FreeBSD it will mostly work, but /proc can be turned off, and that is commonly done on servers to reduce the attack surface. (/proc exposes stuff for debugging like addresses that afaik can be used to attack).
Also on embedded and startup kernels it is sometims turned off.
Parsing "ps" is the best option I think.
# For Linux, ps is normally found in /bin/ps.
FreeBSD too.
Is there a Lazarus/FPC routine to list the processes running on a Linux system, the…
Frank Church wrote 6 lines
I have checked it and assumed that those in which cat /proc/XXXX/cmdline returns a string are the active process?
Is that right? Some of them return a blank - are they terminated, expired or something?
Show quoted text 5 lines
ps parses /proc, but some of the command-line options might vary with distro and version.…
On Sun, Aug 14, 2011 at 13:09, Mark Morgan Lloyd <
Show quoted text 39 lines
PS also varied from implementation to implementation. BusyBox have very limited version of PS for example.
I think it's easier to look at PS code and implement one in Pascal then to parse the content PS.
Show quoted text 14 lines
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20110814/dd5648c9/attachment.html>
2011/8/14 ik
Show quoted text 26 lines
This also will result in very platform specific code.
> >
