Re: processi e /proc e confusione
On 16/03/2014 19:42, Alessandro Baggi wrote:
> [...]
>
> Mio programma A legge il file.pid e dice che dentro ci sta il pid 1555.
> Il mio programma con la chiamata access() dice che la dir "pid" esiste
> e non avvia il programma B.
> Se do un "ps aux | grep 1555" oppure un "ls /proc | grep 1555" non
> ottengo nessun risultato. Questo dovrebbe indicare (almeno in buona
> parte) che un processo non è attivo.
>
> ma un comando come:
>
> cat /proc/1555/cmdline
> kill 1555
>
> che vanno a buon fine su un processo che non è listato mi suona molto
> strano.
[...]
> L'unica cosa che al momento mi viene in mente (ipotesi irreale) è che
> amarok (e gli altri programmi individuati) ha dei thread e che il
> kernel gestisca i thread come dei processi (creando quindi la
> struttura del processo) ma non li rende visibili su /proc in modo tale
> che le altre utility come ps o top non possano rilevarli come
> processi. L'utente non vedendoli non puo considerarli e va ad
> effettuare il kill direttamente sul processo non andando a toccare il
> thread (magari la politica è: il kill deve essere effettuato sul
> processo e non sul thread). Questo non vuol dire che non sia possibile
> effettuare il kill su quel pid.
>
Prova con
ps maxo user,pid,tid,stat,command
per avere sia i processi che i thread.
Poi, se uccidi un thread probabilmente inneschi una scalata alla
liberazione di risorse che comporta la morte del padre e dei fratelli.
In fine, in /proc c'è la lista dei processi ed è pure il posto più
indicato a "contenere" i riferimenti ai thread ma non è necessario siano
direttamente visibili via `ls`.
Resta ancora da vedere come mai il tuo programma è un thread.
Ciao
--
Alessandro T.
R: Perché leggiamo dall'alto al basso e da sinistra a destra.
D: Perché dovrei iniziare la risposta all'e-mail dopo il testo citato?
Reply to: