Небольшая модификация ответа @Kusalananda, передача вывода выражения grep
в cut
, кажется, отлично работает в моей оболочке zsh
.
grep -o -E -e 'sid:[^;]+' -e 'reference:cve,[^;]+' file | cut -d':' -f2 | cut -d',' -f2
В большинстве случаев вы не найдете явных системных вызовов в исходном коде программы. :Приложения пишутся с вызовами библиотеки времени выполнения соответствующего языка, и именно эта библиотека заботится о вызове ядра. Многие языковые библиотеки времени выполнения делегируют эту ответственность, в свою очередь, полагаясь на библиотеку C.
Между библиотечными функциями C и системными вызовами нет даже одного -–-одного соответствия. Некоторые функции библиотеки C вообще не используют никаких системных вызовов; другие используют несколько. Отображение даже меняется от одной архитектуры к другой — Linux имеет ряд специфичных для архитектуры -системных вызовов — и фактически используемые системные вызовы могут сильно зависеть от работающего ядра и библиотеки C, например. поскольку ядро добавляет новые системные вызовы, а их поддержка добавляется в библиотеку C.
Загрузите исходный код installwatch
, часть пакета checkinstall
, и измените installwatch
.
installwatch
использует трюк LD_PRELOAD
для перехвата ВСЕХ системных вызовов. Прочтите man ld.so
.