Man page - procps_pids(3)

Packages contains this manual

Available languages:

en pl sv uk ro

Manual

PROCPS_PIDS

NAMN
SYNOPSIS
BESKRIVNING
Översikt
AnvÀndning
FörbehÄll
RETURVÄRDE
Funktioner som returnerar en ”int”
Funktioner som returnerar en ”adress”
FELSÖKNING
MILJÖVARIABLER
SE ÄVEN

NAMN

procps_pids — API för att hĂ€mta ut processinformation i filsystemet /proc

SYNOPSIS

#include <libproc2/pids.h>

int procps_pids_new (struct pids_info ** info , enum pids_item * element , int antalelement );
int procps_pids_ref (struct pids_info * info );
int procps_pids_unref (struct pids_info ** info );

struct pids_stack * procps_pids_get (
struct pids_info * info ,
enum pids_fetch_type vilken );

struct pids_fetch * procps_pids_reap (
struct pids_info * info ,
enum pids_fetch_type vilken );

struct pids_fetch * procps_pids_select (
struct pids_info * info ,
unsigned * dessa ,
int antaldessa ,
enum pids_select_type vilken );

struct pids_stack ** procps_pids_sort (
struct pids_info * info ,
struct pids_stack * stackar [],
int antalstackade ,
enum pids_item sortelement ,
enum pids_sort_order ordning );

int procps_pids_reset (
struct pids_info * info ,
enum pids_item * nyaelement ,
int nyaantalelement );

struct pids_stack * fatal_proc_unmounted (
struct pids_info * info ,
int returnera_sjÀlv );

LĂ€nka med -lproc2 .

BESKRIVNING

Översikt

Centralt för detta grĂ€nssnitt Ă€r en enkel ”resultat”-post som avspeglar ett ”element” plus dess vĂ€rde (i en union med standardtyper i sprĂ„ket C som medlemmar). Alla ”resultat”-poster allokeras automatiskt och tillhandahĂ„lls av biblioteket.

Genom att ange en vektor av ”element” kan dessa strukturer organiseras som en ”stack”, som potentiellt ger mĂ„nga resultat med ett enda funktionsanrop. AlltsĂ„ kan en ”stack” ses som en post med variabel lĂ€ngd vars innehĂ„ll och ordning helt avgörs av anvĂ€ndaren.

Som en del av detta grĂ€nssnitt finns det tvĂ„ unika upprĂ€knare. Elementen ”noop” och ”extra” finns för att hĂ„lla anvĂ€ndarvĂ€rden. De sĂ€tts aldrig av biblioteket, men ”extra”-resultatet kommer nollstĂ€llas vid varje biblioteksinteraktion.

Filen pids.h kommer vara ett avgörande dokument under anvĂ€ndarens utveckling av program. DĂ€r hittar man tillgĂ€ngliga element, deras returtyp (medlemsnamnen i posten ”resultat”) och kĂ€llan för sĂ„dana vĂ€rden. Ytterligare upprĂ€knare och poster dokumenteras ocksĂ„ dĂ€r.

AnvÀndning

Följande skulle vara en typisk anropssekvens till detta grÀnssnitt.

1. fatal_proc_unmounted()
2. procps_pids_new()
3. procps_pids_get() , procps_pids_reap() eller procps_pids_select()
4. procps_pids_unref()

Funktionen get Ă€r en iterator för succesiva PID:n/TID:n, och returnerar dessa ”element” som tidigare identifierats via new eller reset .

TvĂ„ funktioner stödjer oförutsĂ€gbara variabla utfall. Funktionen reap samlar dat för alla processer medan funktionen select arbetar med specifikaPID:er eller UID:er. BĂ„da kan returnera flera ”stackar” som var och en innehĂ„ller multipla ”resultat”-poster. Om önskas kan en anvĂ€ndare vĂ€lja att sort sĂ„dana resultat

För att anvĂ€nda nĂ„gon ”stack”, och komma Ă„t individuella ”resultat”-poster, krĂ€vs en relativ_upprĂ€kning som visas i makrot VAL definierat i huvudfilen. SĂ„dana vĂ€rden skulle kunna hĂ„rdkodas som: 0 till antalelement-1. Dock uppfylls detta behov typiskt genom att skapa ens egna upprĂ€knare motsvarande ordningen i vektorn av ”element”.

FörbehÄll

API:et <pids> skiljer sig frÄn andra genom att de intressanta elementen mÄste anges vid tidpunkten för new eller reset , dÀr den senare Àr unik för detta API. Om antingen parametern element eller antalelement Àr noll vid tidpunkten för new blir reset obligatorisk före man gör nÄgot annat anrop.

För funktionerna new och unref mÄste adressen till en info -postpekare ges. Med new mÄste den ha initierats till NULL. Med unref kommer den ÄterstÀllas till NULL om referensrÀknaren nÄr noll.

Funktionerna get och reap anvÀnder parametern vilken för att ange huruvida endast uppgifter eller bÄde uppgifter och trÄdar skall hÀmtas.

Funktionen select behöver en vektor av PID:er eller UID:er som dessa tillsammans med antaldessa för att identifera vilka processer som skall hÀmtas. Denna funktion arbetar sedan som en delmÀngd av reap .

NĂ€r man anvĂ€nder funktionen sort skall parametrarna stackar och antalstackade normalt vara de som returneras i posten ”pids_fetch”.

Slutligen kan funktion fatal_proc_unmounted anropas före nÄgon annan funktion för att sÀkerstÀlla att katalogen /proc/ Àr monterad. DÀrmed skall parametern info vara NULL och parametern returnera_sjÀlv vara noll. Om, dÀremot, nÄgra element önskas av det anropande programmet (en returnera_sjÀlv nÄgot annat Àn noll) dÄ mÄste anropet av new föregÄ det för att identfiera element en och hÀmta den önskade info -pekaren.

RETURVÄRDE

Funktioner som returnerar en ”int”

Ett fel kommer indikera ett negativt tal som alltid Àr inversen av nÄgot kÀnt vÀrde frÄn errno.h.

Lyckat resultat markeras med ett returvÀrde av noll. Dock returnerar funktionerna ref och unref det aktuella vÀrdet pÄ referensrÀknaren för info -posten.

Funktioner som returnerar en ”adress”

Ett fel kommer indikeras av en NULL-returpekare och orsaken gÄr att hitta i dett formella errno-vÀrdet.

Lyckat resultat indikeras av en pekare pÄ den namngivna posten. Dock, om man överlever anropet av fatal_proc_unmounted kommer NULL alltid returneras nÀr returnera_sjÀlv Àr noll.

FELSÖKNING

För att hjÀlpa till med programutveckling finns det tvÄ metoder i procps-ng som kan anvÀndas.

Den första Ă€r en levererad fil med namnet ”libproc.supp” som kan vara anvĂ€ndbar nĂ€r man utvecklar ett multitrĂ„dat program. NĂ€r den anvĂ€nds med flaggan ”--suppressions=” till valgrind undviks varningar som hör ihop med biblioteket procps sjĂ€lvt.

SÄdana varningar uppstÄr för att biblioteket hanterar heap-baserade allokeringar pÄ ett trÀdsÀkert sÀtt. Ett enkeltrÄdat program kommer inte att fÄ dessa varningar.

Den andra metoden kan hjĂ€lpa till att sĂ€kerstĂ€lla att medlemsreferenser i ”resultat” stĂ€mmer överens med bibliotekets förvĂ€ntningar. Den rĂ€knar med att ett tillhandahĂ„llet makro i huvuddfilen anvĂ€nds för att komma Ă„t ”resultat”-vĂ€rdet.

Denna funktion kan aktiveras genom nÄgon av de följande metoderna och eventuella avvikelser kommer att skrivas till standard fel .

1)

LĂ€gg till CFLAGS=’-DXTRA_PROCPS_DEBUG’ till eventuella andra flaggor till ./configure som ditt projekt kan tĂ€nkas anvĂ€nda.

2)

LĂ€gg till #include <procps/xtra-procps-debug.h> till varje program efter raden #include <procps/pids.h>.

Denna verifieringsfunktion orsakar en vÀsentlig kostnad. DÀrför Àr det viktigt att den inte Àr aktiverad för produktions-/utgÄvebyggen.

MILJÖVARIABLER

VÀrdet som sÀtts pÄ följande Àr oviktigt, bara att den finns.
LIBPROC_HIDE_KERNEL

Detta kommer dölja kÀrntrÄdar som annars skulle returnera med ett anrop av procps_pids_get , procps_pids_select eller procps_pids_reap .

SE ÄVEN

procps (3), procps_misc (3), proc (5).