Вы действительно хотите /proc/self/status
, который даст вам информацию о выполняемом в данный момент процессе.
Вот пример:
$ cat /proc/self/status
Name: cat
State: R (running)
Tgid: 17618
Pid: 17618
PPid: 3083
TracerPid: 0
Uid: 500 500 500 500
Gid: 500 500 500 500
FDSize: 32
Groups: 10 488 500
VmPeak: 4792 kB
VmSize: 4792 kB
VmLck: 0 kB
VmHWM: 432 kB
VmRSS: 432 kB
VmData: 156 kB
VmStk: 84 kB
VmExe: 32 kB
VmLib: 1532 kB
VmPTE: 24 kB
Threads: 1
SigQ: 0/32268
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
Cpus_allowed: 00000003
Mems_allowed: 1
voluntary_ctxt_switches: 0
nonvoluntary_ctxt_switches: 3
Возможно, вы захотите взглянуть на первые числа в строках Uid и Gid. Вы можете посмотреть, какие номера uid соответствуют какому имени пользователя, посмотрев на /etc/passwd
или вызвав соответствующие функции для сопоставления uid с именем пользователя на любом используемом вами языке.
В идеале вы должны просто позвонить системному вызову getuid()
, чтобы посмотреть эту информацию, а сделать это, посмотрев на /proc/
, контрпродуктивно.