GNU/Linux >> Znalost Linux >  >> Linux

Získání počtu aktuálně používaných deskriptorů souborů z C kódu

Pro aktuální počet procesů můžete použít getrlimit abyste získali limit deskriptoru souboru, pak iterujte přes všechna celá čísla od 0 do tohoto limitu a zkuste zavolat fcntl s F_GETFD příkaz. Uspěje pouze na deskriptorech souborů, které jsou skutečně otevřené, takže je můžete spočítat.

Upravit: Teď mám lepší způsob, jak to udělat. Po získání rlimit , vytvořte velké pole struct pollfd (pokud možno co největší jako limit; jinak jej můžete rozdělit na několik běhů/volání) s každým fd v rozsahu a events člen nastaven na 0. Volejte poll na poli s časovým limitem 0 a vyhledejte POLLNVAL příznak v revents pro každého člena. To vám řekne, které z potenciálně velké sady fd jsou neplatné s jediným syscall, spíše než jedním syscall na fd.


Můžete si přečíst /proc/sys/fs/file-nr zjistit celkový počet alokovaných a volných ovladačů souborového systému a také maximální povolené množství.

[[email protected] proc]# cat /proc/sys/fs/file-nr
3853    908     53182
|       |       |
|       |       |
|       |       max: maximum open file descriptors
|       free: total free allocated file descriptors
allocated: total allocated file descriptors since boot

Chcete-li vypočítat číslo, které se aktuálně používá, stačí provést allocated - free . Můžete také vypočítat procento použitých deskriptorů pomocí ((allocated - free) / max) * 100

Pokud jde o jednotlivé procesy, nejsem si jistý žádným programovým způsobem, jak to můžete udělat.

Zde je návod, jak to udělat s lsof každopádně:http://linuxshellaccount.blogspot.com/2008/06/finding-number-of-open-file-descriptors.html


Protože říkáte, že používáte Linux, můžete otevřít složku /proc/self/fd/ který by měl obsahovat symbolické odkazy na všechny otevřené deskriptory souborů .


Linux
  1. Nedaří se vám získat správný výstupní kód ze skriptu?

  2. Extrahovat blok chráněného kódu Triple Backtick “` Výňatky ze souboru Markdown?

  3. Čtení Grepových vzorů ze souboru?

  1. Editor kódu – ze Správce souborů

  2. Jak vytvořit soubor v Linuxu z okna terminálu?

  3. Počítejte řádky ve velkých souborech

  1. Začínáme s ls

  2. Vytvořte PEM ze souboru PPK

  3. Jak se install -c liší od cp