Да.
Вы можете легко проверить с помощью:
$ /usr/bin/time -f '%M' sh -c 'perl -e "\$y=q{x}x(2*1024*1024)" & wait'
8132
$ /usr/bin/time -f '%M' sh -c 'perl -e "\$y=q{x}x(8*1024*1024)" & wait'
20648
Время GNU использует системный вызов wait4
в Linux (через оболочку wait3
glibc), и, несмотря на отсутствие документации, использование ресурса, возвращаемое в struct rusage
, также включает в себя потомки процесс ждал. Вы можете посмотреть на реализацию ядра wait4
в kernel/exit.c
для всех деталей:
$ grep -C2 RUSAGE_BOTH include/uapi/linux/resource.h
#define RUSAGE_SELF 0
#define RUSAGE_CHILDREN (-1)
#define RUSAGE_BOTH (-2) /* sys_wait4() uses this */
#define RUSAGE_THREAD 1 /* only the calling thread */
FreeBSD и NetBSD также имеют системный вызов wait6
, который возвращает отдельную информацию для ожидаемого процесса и его потомков. Они также четко подтверждают, что в число возвращенных wait3
и wait4
также входят внуки.