Eu não fiz uma pesquisa intensiva, mas não acho que o que você está procurando exista no Linux. Abrir um descritor de arquivo não recebe nenhum bloqueio global, apenas um bloqueio por processo, portanto, em uma máquina multicore, o que você estiver usando para contar o número de descritores de arquivos abertos pode estar sendo executado literalmente ao mesmo tempo que outros threads abrindo ou fechando arquivos em outros núcleos.
O Linux não possui um limite global no número total de arquivos abertos. Não há limite explícito por usuário também. Há um limite por usuário em processos e um limite por processo em números de descritores de arquivos, o que indiretamente impõe um limite a arquivos abertos por usuário, mas isso não é explicitamente controlado.
Explorar /proc
(que é o que o lsof
faz sob o capô) é o melhor possível. /proc
é a API do Linux para obter informações sobre processos.