Thank you Greg and Xiang Xiao, In fact, I was citing threads, but all children were tasks created this way:
ret = task_create("child1_daemon", 100, 4096, child1_daemon, NULL); I will change it to pthread and I think it will work with those suggestions you guys gave me. BR, Alan On 1/16/23, Xiang Xiao <xiaoxiang781...@gmail.com> wrote: > If CONFIG_SIG_DEFAULT, the kernel will terminate all child pthreads, but > not child tasks. > We can extend kill to support -P flag like pkill: > https://linux.die.net/man/1/pkill > -P ppid,... > Only match processes whose parent process ID is listed. > > On Mon, Jan 16, 2023 at 10:14 AM Gregory Nutt <spudan...@gmail.com> wrote: > >> he >> >> > Ooops. No, you a re asking about tasks, not threads. That is easier. >> > The answer is no: One task exiting has not effect at all any other >> tasks. >> > >> >> The question is confusing because it asks about killing other threads >> (aka >> pthreads) when the main (task) exits. But the example shows only tasks >> (main threads). >> >> https://cwiki.apache.org/confluence/display/NUTTX/Tasks+vs.+Threads+FAQ >> >> >> > >> >> On Sun, Jan 15, 2023 at 5:25 PM Alan C. Assis <acas...@gmail.com> >> wrote: >> >> >> >>> Dear NuttXers, >> >>> >> >>> I want to know if there are some hidden configuration that forces all >> >>> children to die when the father task die. >> >>> >> >>> Currently only teh main task dies: >> >>> >> >>> nsh> family & >> >>> >> >>> nsh> ps >> >>> PID GROUP PRI POLICY TYPE NPX STATE EVENT SIGMASK >> >>> STACK >> >>> COMMAND >> >>> ... >> >>> 27 27 100 RR Task --- Waiting Signal 00000000 >> >>> 004032 >> >>> family >> >>> 28 28 100 RR Task --- Waiting Semaphore 00000000 >> >>> 004032 child1_daemon >> >>> 29 29 100 RR Task --- Waiting Signal 00000000 >> >>> 004032 child2_daemon >> >>> 30 30 100 RR Task --- Waiting Signal 00000000 >> >>> 001984 child3_daemon >> >>> >> >>> nsh> kill 27 >> >>> nsh> ps >> >>> PID GROUP PRI POLICY TYPE NPX STATE EVENT SIGMASK >> >>> STACK >> >>> COMMAND >> >>> ... >> >>> 28 28 100 RR Task --- Waiting Signal 00000000 >> >>> 004032 child1_daemon >> >>> 29 29 100 RR Task --- Waiting Signal 00000000 >> >>> 004032 child2_daemon >> >>> 30 30 100 RR Task --- Waiting Signal 00000000 >> >>> 001984 child3_daemon >> >>> >> >>> I could setup a signal handling to handle the kill signal in the main >> >>> task and use it to change the value of some conditional variable that >> >>> maintain the threads loop of each child running, this is is an >> >>> option, >> >>> but maybe there are better option. >> >>> >> >>> Please let me know how you are solving this issue. >> >>> >> >>> BR, >> >>> >> >>> Alan >> >>> >> >> >> >