# # to jest wskazowka do zadania : # "wysylanie sygnalu do wszystkich potomkow danego procesu" # # wywolanie: ps -o pid,ppid | awk -f awk01 pid=2 # ps -o pid,ppid # $1 $2 # kazdy proces ma tylko jednego "rodzica" ! # dla kazdego procesu zapamietujemy jego rodzica w tablicy rodzic ... /^ *[0-9]+ +[0-9]+ *$/ { rodzic[$1]=$2; } END { for(i in rodzic) { if (i==pid) # "pid" jest podane jako argument ! { wybrany[i]=1; } else { wybrany[i]=0; } } jeszcze_raz=1 while(jeszcze_raz) { jeszcze_raz=0 for(i in wybrany) if (wybrany[i]==0) { if (wybrany[rodzic[i]]==1) { wybrany[i]=1; jeszcze_raz=1; } } } for(i in wybrany) if(wybrany[i]){ printf "%d ",i; } printf "\n" }