Linux API to list running processes?
http://procps.sourceforge.net/
http://procps.cvs.sourceforge.net/viewvc/procps/procps/proc/readproc.c?view=markup
Is the source of ps and other process tools. They do indeed use proc (indicating it is probably the conventional and best way). Their source is quite readable. The file
/procps-3.2.8/proc/readproc.c
May be useful. Also a useful suggestion as posted by ephemient is linking to the API provided by libproc, which should be available in your repo (or already installed I would say) but you will need the "-dev" variation for the headers and what-not.
Good Luck
Make a system call to get list of processes
Why would you implement a system call for this? You don't want to add a syscall to the existing Linux API. This is the primary Linux interface to userspace and nobody touches syscalls except top kernel developers who know what they do.
If you want to get a list of processes and their parameters and real-time statuses, use /proc
. Every directory that's an integer in there is an existing process ID and contains a bunch of useful dynamic files which ps
, top
and others use to print their output.
If you want to get a list of processes within the kernel (e.g. within a module), you should know that the processes are kept internally as a doubly linked list that starts with the init
process (symbol init_task
in the kernel). You should use macros defined in include/linux/sched.h
to get processes. Here's an example:
#include <linux/module.h>
#include <linux/printk.h>
#include <linux/sched.h>
static int __init ex_init(void)
{
struct task_struct *task;
for_each_process(task)
pr_info("%s [%d]\n", task->comm, task->pid);
return 0;
}
static void __exit ex_fini(void)
{
}
module_init(ex_init);
module_exit(ex_fini);
This should be okay to gather information. However, don't change anything in there unless you really know what you're doing (which will require a bit more reading).
in linux - show a list of all processes and note if they are running or suspended
You can use "ps" to list processes, This (ps aux) will list all the processes. Given an example output of it below.
ps aux | more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 189160 9376 ? Ss 15:51 0:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 20
root 2 0.0 0.0 0 0 ? S 15:51 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 15:51 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 15:51 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 15:51 0:06 [rcu_sched]
root 8 0.0 0.0 0 0 ? S 15:51 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 15:51 0:04 [rcuos/0]
By checking the STAT of the process ( UNDER "STAT" ) you can identify the process states, Below are some possible states codes.
- R running or runnable (on run queue)
- D uninterruptible sleep (usually IO)
- S interruptible sleep (waiting for an event to complete)
- Z defunct/zombie, terminated but not reaped by its parent
- T stopped, either by a job control signal or because it is being
traced
You can type "man ps" to get more info.
How to list all types (running, zombie, etc.) of processes currently in linux with native python library
Not exactly what you are trying to accomplish but linux commands can be run using the subprocess module:
import subprocess
proc = subprocess.Popen("pstree",stdout=subprocess.PIPE)
proc.communicate()[0]
proc = subprocess.Popen(["ps" ,"aux"],stdout=subprocess.PIPE)
proc.communicate()[0]
How to display list of running processes Python?
Try this command:
ps -ef | grep python
ps
stands for process status
Related Topics
Getting a File* from a Std::Fstream
Why Does Rand() Yield the Same Sequence of Numbers on Every Run
Defining Static Members in C++
How to Create a Generic Object Model For Use in Qml
When to Use Inline Function and When Not to Use It
C/C++ With Gcc: Statically Add Resource Files to Executable/Library
Linking Static Libraries to Other Static Libraries
Algorithm to Convert Rgb to Hsv and Hsv to Rgb in Range 0-255 For Both
Why Do Objects of the Same Class Have Access to Each Other'S Private Data
What Are the Differences Between C-Like, Constructor, and Uniform Initialization
Unmangling the Result of Std::Type_Info::Name
What Is a Converting Constructor in C++ ? What Is It For
Why Are #Ifndef and #Define Used in C++ Header Files
When Do I Use a Dot, Arrow, or Double Colon to Refer to Members of a Class in C++
Wchars, Encodings, Standards and Portability
Splitting Templated C++ Classes into .Hpp/.Cpp Files - Is It Possible