Provided by: procps_4.0.4-4ubuntu3.2_amd64 bug

NUME

       procps_pids  -  API  (interfață de program) pentru a accesa informații la nivel de sistem din sistemul de
       fișiere „/proc

REZUMAT

       #include <libproc2/pids.h>

       int procps_pids_new   (struct pids_info **info, enum pids_item *items, int numitems);
       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 which);

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

       struct pids_fetch *procps_pids_select (
           struct pids_info *info,
           unsigned *these,
           int numthese,
           enum pids_select_type which);

       struct pids_stack **procps_pids_sort (
           struct pids_info *info,
           struct pids_stack *stacks[],
           int numstacked,
           enum pids_item sortitem,
           enum pids_sort_order order);

       int procps_pids_reset (
           struct pids_info *info,
           enum pids_item *newitems,
           int newnumitems);

       struct pids_stack *fatal_proc_unmounted (
           struct pids_info *info,
           int return_self);

       Legătură cu -lproc2.

DESCRIERE

   Prezentare generală
       Esențial pentru această interfață este o structură simplă de „rezultat” care reflectă un  „element”  plus
       valoarea acestuia (într-o uniune cu tipuri de limbaj C standard ca membri).  Toate structurile „rezultat”
       sunt alocate și furnizate automat de bibliotecă.

       Prin  specificarea  unei  matrice  de  „elemente”,  aceste  structuri  pot fi organizate ca o „stivă”, cu
       potențialul de-a produce multe rezultate cu un singur apel către funcție.  Astfel,  o  „stivă”  poate  fi
       văzută  ca  o  înregistrare cu lungime variabilă al cărei conținut și ordine sunt determinate exclusiv de
       utilizator.

       Ca parte a acestei interfețe există doi enumeratori unici.  Elementele „noop” și „extra” există pentru  a
       păstra  valorile utilizatorului.  Ele nu sunt niciodată definite de bibliotecă, dar rezultatul „extra” va
       fi redus la zero cu fiecare interacțiune cu bibliotecă.

       Fișierul pids.h va fi un document esențial în timpul dezvoltării programului utilizatorului.  Acolo  veți
       găsi  elementele  disponibile,  tipul  lor de returnare (numele membrului structurii „rezultat)” și sursa
       acestor valori.  Acolo sunt de asemenea documentate enumeratori și structuri suplimentare.

   Utilizare
       Următoarele linii, ar fi o secvență tipică de apeluri la aceste interfețe.

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

       Funcția get este un iterator pentru PID-uri/TID-uri succesive, returnând  acele  „articole”  identificate
       anterior prin new sau reset.

       Două  funcții  asigură  suport  pentru rezultate variabile imprevizibile.  Funcția reap adună date pentru
       toate procesele, în timp ce funcția select se ocupă de PID-uri sau UID-uri specifice.  Ambele pot returna
       mai multe „stive” fiecare conținând mai multe structuri „rezultat”.  Opțional, un utilizator poate  alege
       să  folosească sort pentru a sorta astfel de rezultate

       Pentru  a  exploata  orice  „stivă”  și pentru a accesa structuri „rezultat” individuale, este necesar un
       relative_enum, așa cum se arată în macrocomanda VAL definită în fișierul  antet.   Astfel  de  valori  ar
       putea  fi  codificate  ca:  de  la  0  la  numitems-1.   Cu  toate acestea, această nevoie este de obicei
       satisfăcută prin crearea propriilor enumeratori corespunzători ordinii matricei „elemente”.

   Avertismente
       Interfața de program <pids> diferă de  celelalte  prin  faptul  că  acele  elemente  de  interes  trebuie
       furnizate  în  timpul  execuției  new  sau  reset, acesta din urmă fiind unic pentru acest API.  Dacă fie
       parametrul items, fie numitems este zero în timpul execuției new, atunci reset devine obligatoriu înainte
       de a lansa orice alt apel.

       Pentru funcțiile new și unref, trebuie furnizată adresa unui indicator de structură info.  Cu new, acesta
       trebuie să fi fost inițializat la NULL.  Cu unref va fi reinițializat la NULL dacă numărul  de  referințe
       ajunge la zero.

       Funcțiile  get  și reap folosesc parametrul which pentru a specifica dacă trebuie preluate doar sarcinile
       sau atât sarcinile cât și firele de execuție.

       Funcția select necesită o matrice de  PID-uri  sau  UID-uri  ca  these  împreună  cu  numthese  pentru  a
       identifica procesele care urmează să fie preluate.  Această funcție funcționează apoi ca un subset al lui
       reap.

       Când  se  utilizează  funcția  sort, parametrii stacks și numstacked ar fi în mod normal cei returnați în
       structura „pids_fetch”.

       În cele din urmă, o funcție fatal_proc_unmounted poate fi apelată înaintea oricărei alte funcții pentru a
       se asigura că directorul „/proc/” este montat.  Ca atare,  parametrul  info  va  fi  NULL  și  parametrul
       return_self  zero.   Dacă,  totuși,  unele  elemente sunt dorite pentru programul emitent (un return_self
       altul decât zero), atunci apelul new trebuie să îl precedă pentru a identifica items și pentru  a  obține
       indicatorul info necesar.

VALOARE RETURNATĂ

   Funcții care returnează un „int” (număr întreg)
       O  eroare va fi indicată printr-un număr negativ care este întotdeauna inversul unei valori binecunoscute
       a errno.h.

       Succesul este indicat de o valoare  de  returnare  zero.   Cu  toate  acestea,  funcțiile  ref  și  unref
       returnează numărul de referințe curent al structurii info.

   Funcții care returnează o „adresă”
       O  eroare va fi indicată printr-un indicator de returnare NULL cu motivul găsit în valoarea formală errno
       (număr eroare).

       Succesul  este  indicat  de  un  indicator  către  structura  numită.   Cu  toate  acestea,   dacă   ceva
       supraviețuiește  apelului  fatal_proc_unmounted,  NULL  este întotdeauna returnat atunci când return_self
       este zero.

DEPANAREA

       Pentru a ajuta la dezvoltarea programului, există două facilități procps-ng care pot fi exploatate.

       Prima este un fișier furnizat numit „libproc.supp” care poate fi util atunci când se dezvoltă o aplicație
       cu multiple-fire de execuție.  Când este utilizat cu opțiunea valgrind „--suppressions=”,  avertismentele
       asociate cu biblioteca procps în sine sunt evitate.

       Astfel  de  avertismente  apar  deoarece biblioteca gestionează alocările bazate pe „heap” într-o manieră
       sigură pentru fire.  O aplicație cu un singur-fir de execuție nu va primi aceste avertismente.

       A doua facilitate poate ajuta să ne asigurăm  că  referințele  membrului  „rezultat”  sunt  în  acord  cu
       așteptările  bibliotecii.   Se  presupune  că  o  macrocomandă furnizată în fișierul antet este utilizată
       pentru a accesa valoarea „rezultat”.

       Această caracteristică poate fi activată prin oricare dintre următoarele metode și orice discrepanțe  vor
       fi scrise la ieșirea standard de eroare.

       1) Adaugă  CFLAGS='-DXTRA_PROCPS_DEBUG'  la  orice  alte  opțiuni  ./configure  pe  care  le poate folosi
          proiectul dvs.

       2) Adaugă #include <procps/xtra-procps-debug.h> la orice program după linia #include <procps/pids.h>.

       Această caracteristică de verificare implică o suprasarcină substanțială.  Prin urmare, este important ca
       aceasta să nu fie activată pentru o versiune de producție/lansare.

VARIABILE DE MEDIU

       Valoarea stabilită pentru următoarea variabilă este neimportantă, doar prezența acesteia.

       LIBPROC_HIDE_KERNEL
              Acest lucru va ascunde firele de execuție ale nucleului care altfel ar fi  returnate  cu  un  apel
              procps_pids_get, procps_pids_select sau procps_pids_reap.

CONSULTAȚI ȘI

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

libproc2                                           august 2022                                    PROCPS_PIDS(3)