Esiste un modo affidabile per uccidere tutti i processi di un determinato utente? kill(-1, SIGKILL)
come quell'utente funzionerà, a meno che un processo non autorizzato di quell'utente uccida prima il processo di uccisione. Il meglio che riesco a trovare finora è quello di fare il ciclo attraverso system("ps -u")
per quell'utente e uccidere i processi in questo modo, ma ciò sembra davvero intrusivo e inefficiente.Elimina tutti i processi per un dato utente
EDIT: Per chiarire, sto specificatamente chiedendo una soluzione compatibile POSIX. Per qualche ragione pensavo che taggare la domanda posix lo avrebbe messo nel titolo.
Vale la pena notare che tutte le soluzioni qui (come è generalmente il caso con 'kill') hanno una [TOCTOU] (https: // CWE .mitre.org/data/definitions/367.html) condizioni di gara: tra l'identificazione dei processi per uccidere e ucciderli, il processo potrebbe morire e il PID potrebbe essere riciclato. Oppure potrebbero nascere nuovi processi di proprietà dell'utente, a te sconosciuti. – pilcrow