Man page - procps_pids(3)
Packages contains this manual
Available languages:
en pl sv uk roManual
PROCPS_PIDS
NAMNSYNOPSIS
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).