Объяснение hrtimer_nanosleep

Есть два очень простых способа:

  • С помощью командыps:

    ps -o comm= $$
    

    или

    ps -h -o comm -p $$
    

    где:

    • -hили завершить все опции с помощью =, чтобы не показывать заголовок.
    • -o commдля отображения только базового имени процесса(bashвместо/bin/bash).
    • -p перечислить только процессы с предоставленным списком форм PID.
  • Использование/procпсевдофайловой системы информации о процессе -:

    cat /proc/$$/comm
    

    Эта опция работает точно так же, как команда psвыше.

    или

    readlink /proc/$$/exe
    

    Это /proc/PID/exeссылка на исполняемый файл, который в данном случае будет указывать на /bin/bash, /bin/ksh и т. д.

    Для получения только имени оболочки вы можете просто использовать

    basename $(readlink /proc/$$/exe)
    

    Это единственный вариант, который всегда будет давать один и тот же результат, даже если вы находитесь в сценарии, исходном коде или терминале, как ссылки на двоичный файл используемого интерпретатора оболочки.

    Предупреждение Вы должны знать, что это покажет окончательный двоичный файл, поэтому ksh может быть связан с ksh93 или sh с bash.

Использование /procдействительно полезно через /proc/self, который связывается с PID текущей команды.

1
05.11.2019, 11:32
1 ответ

clock_nanosleep— это системный вызов, т. е. API, доступный ядром для пользовательского пространства. Вы найдете его определение здесь .

clock_nanosleepопирается на ряд определений часов , в частности на запись nsleepв этих структурах. Это указывает на common_nsleep, который является оболочкой вокругhrtimer_nanosleep.

Это связь между ними:clock_nanosleep— системный вызов, а hrtimer_nanosleep— внутренняя функция ядра, используемая для его реализации. Вы не можете вызвать последнюю из-за пределов ядра, только первую.

hrtimer_nanosleepтакже используется для реализации других системных вызовов, например nanosleep.

0
27.01.2020, 23:57

Теги

Похожие вопросы