/ / Ako zabiť programy v rovnakom adresári v Linuxe? - linux, ubuntu, zabiť

Ako zabiť programy v rovnakom adresári v systéme Linux? linux, ubuntu, zabiť

Chcem zabiť všetky programy bežiace rovnakoadresár ako ja. Potrebujem zistiť, ktoré programy práve bežia, a zabiť ich (a dávať pozor, aby som sa nezabil). Používam svoj program v Ubuntu (Linux).

Potrebujem použiť tento príkaz:

int kill(pid_t pid, int sig);

Ako to môžem urobiť?

* Programy žijú v rovnakom adresári.

odpovede:

2 pre odpoveď č. 1

Stricto sensu, tvoja otázka nedáva zmysel. V čase, keď získate adresár procesu, mohol sa volať chdir (2) skôr ako to zabijete (a potom ste to nemali zabiť).

V systéme Linux získate informácie o procesoch pomocou príkazu proc (5), Takže použite readdir (3) po opendir (3) na /proc/ (filtrovať iba číselné adresáre, ako /proc/1234/ čo zodpovedá procesu pid 1234). Pre každý proces použite odkaz na čítanie (2) na /proc/1234/cwd získať jeho adresár (a ďalej /proc/1234/exe získať jeho spustiteľný súbor, ak je to dôležité). Použite getcwd (2) a getpid (2) získať aktuálny adresár a aktuálny proces.

BTW, vaše zabiť (2) je a syscall (uvedené v systémové volania (2)), nie príkaz. Príkaz je zabiť (1) ktoré majú byť zvyčajne spustené z mušle.

Mali by ste si prečítať Pokročilé programovanie Linuxu.

Konečne vaše želané správanie zabiť každéhoproces, ktorý beží vo vašom adresári, je pre používateľa mimoriadne nepriaznivý. Aspoň to teda zdokumentujte a možno dajte nejaký spôsob, ako toto správanie deaktivovať. Šetrnejším spôsobom by bolo nejaké vyrobiť dočasný adresár (pomocou mkdtemp (3)) potom chdir (2) do toho (potom asi odpojiť (2) alebo rmdir (2) it).

Pozri tiež pkill (1) a pgrep