есть ли в библиотеке C эквивалент killall в Linux?

Это хороший вопрос, и, насколько я помню, некоторые интервью сисадминов используют его.

У вас есть несколько способов сделать это:

  • Удалить, используя относительный или абсолютный путь. Как сказал SHW в своем ответе:

    rm -rf ./-ksh.l.15092015.log
    

    или

    rm -rf /full/path/-ksh.l.15092015.log
    
  • Устранить, отключив интерпретацию тире (-) для rm

    rm -- -ksh.l.15092015.log
    
  • И более запутанный способ :), используя inode:

    ls -li | grep ksh.l.15092015.log
    
    5383819 -rw-r-r-- 1 root root 0 sep 15 13:17 -ksh.l.15092015.log
    
    найти . -inum 5383819 -delete
    

Вы также можете использовать mc и vim, но это те "shell" способы, которые я знаю.

0
26.04.2018, 13:19
1 ответ

kill(2) — это системный вызов для отправки сигнала процессу, аналога утилите killallнет.

Простым способом сделать это в C было бы вызвать killallиз вашей программы на C, используя системную (3 )библиотечную функцию или, возможно, popen (3 ).

В качестве альтернативы вы можете прочитать справочную страницу о псевдофайловой системе /procи найти имена команд и найти pid самостоятельно.

man 2 kill
man 3 system
man 3 popen
man 5 proc
2
28.01.2020, 02:43

Теги

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