PROCPS(3) Library Functions Manual PROCPS(3) NUME procps - API (interfaa de program) pentru a accesa informaii la nivel de sistem din sistemul de fiiere ,,/proc" REZUMAT Cinci interfee distincte sunt reprezentate in acest rezumat i numite dupa fiierele pe care le acceseaza in pseudosistemul de fiiere ,,/proc": diskstats, meminfo, slabinfo, stat i vmstat. #include a_numita.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 interfaa programului diskstats enum item item); struct stack *procps_select ( struct info *info, [ const char *name, ] doar interfaa programului diskstats enum item *items, int numitems); struct reaped *procps_reap ( struct info *info, [ enum reap_type what, ] doar interfaa 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); Funciile i structurile de mai sus sunt generice, dar specificaia interfaa_numita ar fi, de asemenea, parte a oricaror identificatori. De exemplu, ,,procps_new" ar fi de fapt ,,procps_meminfo_new" i ,,info" ar fi cu adevarat ,,diskstats_info", etc. Acelai nume de interfaa_numita este folosit in fiecare nume de fiier antet cu un sufix `.h'. Legatura cu -lproc2. DESCRIERE Prezentare generala Esenial pentru aceste interfee este o structura simpla de ,,rezultat" care reflecta un ,,element" plus valoarea acestuia (intr-o uniune cu tipuri de limbaj C standard ca membri). Toate structurile ,,rezultat" sunt alocate i furnizate automat de biblioteca. Prin specificarea unei matrice de ,,elemente", aceste structuri pot fi organizate ca o ,,stiva", cu potenialul de-a produce multe rezultate cu un singur apel catre funcie. Astfel, o ,,stiva" poate fi vazuta ca o inregistrare cu lungime variabila al carei coninut i ordine sunt determinate exclusiv de utilizator. Ca parte a fiecarei interfee exista doi enumeratori unici. Elementele ,,noop" i ,,extra" exista pentru a pastra valorile utilizatorului. Ele nu sunt niciodata definite de biblioteca, dar rezultatul ,,extra" va fi redus la zero cu fiecare interaciune cu biblioteca. Documentul de baza in dezvoltarea unui program de utilizator va fi fiierul antet interfaa_numita. Acolo vei gasi elementele disponibile, tipul pe care acestea il returneaza (numele membrului structurii ,,rezultat)" i sursa acestor valori. Acolo sunt de asemenea documentai enumeratori i structuri suplimentare. Utilizare Urmatoarele linii, ar fi o secvena tipica de apeluri la aceste interfee. 1. procps_new() 2. procps_get(), procps_select() sau procps_reap() 3. procps_unref() Funcia get este folosita pentru a prelua o structura ,,rezultat" pentru un singur ,,element". Alternativ, o macrocomanda GET este disponibila atunci cand doar valoarea returnata este de interes. Funcia select poate prelua mai multe structuri ,,rezultat" intr-o singura ,,stiva". Pentru rezultate variabile imprevizibile, interfeele diskstats, slabinfo i stat exporta o funcie reap. Este folosita pentru a prelua mai multe ,,stive" fiecare coninand mai multe structuri ,,rezultat". Opional, un utilizator poate alege sa sorteze acele rezultate. Pentru a exploata orice ,,stiva" i pentru a accesa structuri ,,rezultat" individuale, este necesar un relative_enum, aa cum se arata in macrocomanda VAL definita in fiierul antet. Astfel de valori ar putea fi codificate ca: de la 0 la numitems-1. Cu toate acestea, aceasta nevoie este de obicei satisfacuta prin crearea propriilor enumeratori corespunzatori ordinii matricei ,,elemente". Avertismente Funciile new, ref, unref, get i select sunt disponibile in toate cele cinci interfee. Pentru funciile new i unref, trebuie furnizata adresa unui indicator de structura info. Cu new, acesta trebuie sa fi fost iniializat la NULL. Cu unref va fi reiniializat la NULL daca numarul de referine ajunge la zero. In cazul interfeei diskstats, un parametru name in funciile get i select identifica un nume de disc sau partiie Pentru interfaa stat, un parametru what in funcia reap identifica daca trebuie adunate date doar pentru CPU-uri sau atat pentru CPU-uri cat i pentru nodurile NUMA. Cand se utilizeaza funcia sort, parametrii staks i numstacked ar fi in mod normal cei returnai in structura ,,reaped". VALOARE RETURNATA Funcii care returneaza un ,,int" (numar intreg) O eroare va fi indicata printr-un numar negativ care este intotdeauna inversul unei valori binecunoscute a errno.h. Succesul este indicat de o valoare de returnare zero. Cu toate acestea, funciile ref i unref returneaza numarul de referine curent al structurii info. Funcii care returneaza o ,,adresa" O eroare va fi indicata printr-un indicator de returnare NULL cu motivul gasit in valoarea formala errno (numar eroare). Succesul este indicat de un indicator catre structura numita. DEPANAREA Pentru a ajuta la dezvoltarea programului, este prevazuta o facilitate care poate ajuta la asigurarea faptului ca referinele la membrii ,,rezultate" sunt in concordana cu ateptarile bibliotecii. Aceasta facilitate presupune ca macrocomanda furnizata in fiierul antet va fi utilizata pentru a accesa valoarea ,,rezultat". Aceasta caracteristica poate fi activata prin oricare dintre urmatoarele metode i orice discrepane vor fi scrise la ieirea standard de eroare. 1) Adauga CFLAGS='-DXTRA_PROCPS_DEBUG' la orice alte opiuni ./configure utilizate. 2) Adauga #include la orice program dupa comenzile include ale interfeelor numite. Aceasta caracteristica de verificare implica o suprasarcina substaniala. Prin urmare, este important ca aceasta sa nu fie activata pentru o versiune de producie/lansare. CONSULTAI I procps_misc(3), procps_pids(3), proc(5). libproc2 august 2022 PROCPS(3)