PROCPS(3) Library Functions Manual PROCPS(3)

# [NUME](#NUME)

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

# [REZUMAT](#REZUMAT)

Cinci interfețe distincte sunt reprezentate în acest rezumat și numite după fișierele pe care le accesează în pseudosistemul de fișiere „/proc”: **diskstats**, **meminfo**, **slabinfo**, **stat** și **vmstat**.

```
#include <libproc2/interfața_numită.h>
```

```
int procps_new   (struct info **info);
int procps_ref   (struct info  *info);
int procps_unref (struct info **info);
```

```
struct result *procps_get (


    struct info *info,
[   const char *name,      ]   doar interfața programului diskstats


    enum item item);
```

```
struct stack *procps_select (


    struct info *info,
[   const char *name,      ]   doar interfața programului diskstats


    enum item *items,


    int numitems);
```

```
struct reaped *procps_reap (


    struct info *info,
[   enum reap_type what,   ]   doar interfața programului stat


    enum item *items,


    int numitems);
```

```
struct stack **procps_sort (


    struct info *info,


    struct stack *stacks[],


    int numstacked,


    enum item sortitem,


    enum sort_order order);
```

Funcțiile și structurile de mai sus sunt generice, dar specificația **interfața\_numită** ar fi, de asemenea, parte a oricăror identificatori. De exemplu, „procps\_new” ar fi de fapt „procps\_**meminfo**\_new” și „info” ar fi cu adevărat „**diskstats**\_info”, etc.

Același nume de **interfața\_numită** este folosit în fiecare nume de fișier antet cu un sufix „.h”.

Legătură cu *-lproc2*.

# [DESCRIERE](#DESCRIERE)

## [Prezentare generală](#Prezentare_general)

Esențial pentru aceste interfețe 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 fiecărei 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ă.

Documentul de bază în dezvoltarea unui program de utilizator va fi fișierul antet **interfața\_numită**. Acolo veți găsi elementele disponibile, tipul pe care acestea îl returnează (numele membrului structurii „rezultat)” și sursa acestor valori. Acolo sunt de asemenea documentați enumeratori și structuri suplimentare.

## [Utilizare](#Utilizare)

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

```
1. procps_new()
2. procps_get(), procps_select() sau procps_reap()
3. procps_unref()
```

Funcția **get** este folosită pentru a prelua o structură „rezultat” pentru un singur „element”. Alternativ, o macrocomandă **GET** este disponibilă atunci când doar valoarea returnată este de interes.

Funcția **select** poate prelua mai multe structuri „rezultat” într-o singură „stivă”.

Pentru rezultate variabile imprevizibile, interfețele **diskstats**, **slabinfo** și **stat** exportă o funcție **reap**. Este folosită pentru a prelua mai multe „stive” fiecare conținând mai multe structuri „rezultat”. Opțional, un utilizator poate alege să **sorteze** acele 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](#Avertismente)

Funcțiile **new**, **ref**, **unref**, **get** și **select** sunt disponibile în toate cele cinci interfețe.

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.

În cazul interfeței **diskstats**, un parametru *name* în funcțiile **get** și **select** identifică un nume de disc sau partiție

With the **slabinfo** interface, *select* results are only meaningful with ‘SLABS’ (plural) enumerators while *reap* results are only meaningful with ‘SLAB’ (singular) enumerators.

Pentru interfața **stat**, un parametru *what* în funcția **reap** identifică dacă trebuie adunate date doar pentru CPU-uri sau atât pentru CPU-uri cât și pentru nodurile NUMA.

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

# [VALOARE RETURNATĂ](#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ă.

# [DEPANAREA](#DEPANAREA)

Pentru a ajuta la dezvoltarea programului, este prevăzută o facilitate care poate ajuta la asigurarea faptului că referințele la membrii „rezultate” sunt în concordanță cu așteptările bibliotecii. Această facilitate presupune că macrocomanda furnizată în fișierul antet va fi 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 utilizate.

2\)

Adaugă #include &lt;procps/xtra-procps-debug.h&gt; la orice program *după* comenzile include ale interfețelor numite.

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.

# [CONSULTAȚI ȘI](#CONSULTA)

[**procps\_misc**(3)](/man/os/procps/procps_misc.3), [**procps\_pids**(3)](/man/os/procps/procps_pids.3), [**proc**(5)](/man/os/procps/proc.5).

2026-03-03 procps-ng

---

Document: procps(3) from procps 4.0.7-r3 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-4.0.7.tar.xz
