Come funziona la gerarchia dei processi in macOS

2

Mi chiedo come Activity Monitor colleghi questi due processi se il bambino (Contenuto Web Safari) non ha il ppid di quello principale (Safari). pstree , che utilizza ppid per organizzare l'albero, non mostra alcuna relazione tra di loro.

Eccounaltroesempio,caffeinateèstatolanciatodaunoscriptdishellinBetterTouchToolutilizzandonohup,eancorapstreenonmostraalcunarelazione.

Inrealtàciòdicuihobisognoèdiinviareunsegnalekilla"childs" come Safari Web Content usando shell script o C api conoscendo solo il "Safari" pid . E penso che questo potrebbe aiutare.

    
posta Gonzo 07.06.2018 - 05:15
fonte

1 risposta

2

I processi "figlio" di Safari sono in realtà figli del sistema init ( launchd che ha PID 1 ), il che spiega perché pstree o altri tali strumenti Unix non possono utilizzare il solito pid padre (o gruppo di processi ) relazione:

%psaxopid,ppid|egrep'81921|81925|82022'819211819251820221

Dovraiinveceutilizzareun'APIApple;l'utilitàlaunchctlindicacheil"dominio" o "ASID" potrebbe essere rilevante:

% sudo launchctl procinfo 82022 | grep -1 81921

        domain = com.apple.xpc.launchd.domain.pid.Safari.81921
        asid = 100006
--
--

responsible pid = 81921
responsible unique pid = 81921
responsible path = /Applications/Safari.app/Contents/MacOS/Safari

Ma pubblichiamo queste informazioni prima di testare cosa fa qualcosa di simile a launchctl kill ... .

(Si noti anche quanto sopra è da Mac OS X 10.11.6, le interfacce potrebbero essere state modificate da Apple da allora.)

    
risposta data 07.06.2018 - 20:30
fonte

Leggi altre domande sui tag