Мне нужно получить время начала процесса с использованием кода C в пользовательском пространстве.
Процесс будет выполняться от имени пользователя root, поэтому я могу открыть /proc/PID/stat.
. Я видел реализацию, например:
время запуска процесса в Linux
или
http://brokestream.com/procstat.c
Но они недействительны, Почему они недействительны?если параметр процесса 2 содержит пробел, например:
[ilan@CentOS7286-64 tester]$ cat /proc/1077/stat
1077 (rs:main Q:Reg) S 1 1054 1054 0 -1 1077944384 21791 0 10 0 528 464 0 0 20 0 3 0 1056 321650688 1481 18446744073709551615 1 1 0 0 0 0 2146172671 16781830 1133601 18446744073709551615 0 0 -1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
Эти решения не будут работать.
Есть ли лучший способ получить время запуска процесса, отличное от анализа результатов / proc / PID / stat?Я могу сделать следующую логику:
- read long, первый параметр pid
- read char, убедитесь, что я заканчиваю чтение только при нажатии close ')'.- 2-й параметр - tcomm (имя исполняемого файла)
- read char - состояние процесса 3-го параметра.
В solaris , вы просто читаете результат в psinfo_tструктура.