Track child processes.
Project description
process-tracker
Process tracker enables tracking creation of child processes.
Usage:
import process_tracker; process_tracker.install()
import os
pid1 = os.fork()
pid2 = os.fork()
pid3 = os.fork()
if pid1 and pid2 and pid3:
print(process_tracker.children())
Prints a list of tuples with (pid, create_time) for each process.
create_time can be used to confirm that the current process (if any) with
the given pid is the same as the original. For example:
import process_tracker
import psutil
def get_create_time(ctime):
boot_time = psutil.boot_time()
clock_ticks = os.sysconf("SC_CLK_TCK")
return boot_time + (ctime / clock_ticks)
processes = []
for pid, create_time in process_tracker.children():
try:
p = psutil.Process(pid=pid)
except psutil.NoSuchProcess:
continue
if p.create_time() == get_create_time(create_time):
processes.append(p)
# processes now has the list of active child processes
# psutil itself does a check before sensitive operations that the
# active process create time is the same as when the Process object
# was initialized.
for p in processes:
p.terminate()
Limitations
- Only tracks children spawned from dynamically-linked executables.
- Relies on
LD_PRELOADso will not work for setuid/setgid executables.
Development
Basic
python -m venv .venv.venv/bin/python -m pip install tox- Make changes
.venv/bin/python -m tox
Debugging C build
Avoids overhead of making sdist
- As above
make c-build
Debugging issues from sub-process
gdb debugging of sub-processes.
- As above
make debug
Debugging tests without rebuild
- As above
.venv/bin/python -m pip install . .[dev]
Then
pip install . && pytestwhen rebuild is neededpytestwhen only tests changed
Release
docker run \
-e REAL_UID=$(id -u) \
-e REAL_GID=$(id -g) \
-v "$PWD/scripts/build.sh:/build.sh" \
-v "$PWD:/src" \
dockcross/manylinux1-x64 \
sh -c 'cd /src && env "PATH=/opt/python/cp37-cp37m/bin:$PATH" /build.sh'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file process-tracker-0.1.2.tar.gz.
File metadata
- Download URL: process-tracker-0.1.2.tar.gz
- Upload date:
- Size: 30.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5307ea90fc36d53fa6c2034f4a1f1ed54a5e58e2ab0f203aad94b545f2fe1e3
|
|
| MD5 |
95d030de689660ae914ef39fca1c0adf
|
|
| BLAKE2b-256 |
08cea9643120a5de4796b3a935e618b831f1d186eab31fde8f734f7ebb37df16
|
File details
Details for the file process_tracker-0.1.2-cp37-cp37m-manylinux1_x86_64.whl.
File metadata
- Download URL: process_tracker-0.1.2-cp37-cp37m-manylinux1_x86_64.whl
- Upload date:
- Size: 82.1 kB
- Tags: CPython 3.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ca1035ca9e17fa8dbcf5f79ac6ff7ac0fb9411860f4cfd9f91533735726cd89
|
|
| MD5 |
597cba19f2d17e01ab837ff3a4620b53
|
|
| BLAKE2b-256 |
1bb79a54c608b023587dc26a805fcc75bf06f4a07239dd7c8f477dad9308dc89
|