sed
+numfmt
раствор:
lshw -class disk -class storage \
| sed -n '/size:/ s/.*(\([0-9]*.*[KMGT]\)B)/\1/p' \
| numfmt --from si | paste -sd+ - | bc | numfmt --to si --suffix B
paste -sd+ - | bc
также можно заменить наawk '{ sum+=$1 }END{ print sum }'
Хотя мы можем прочитать ваши 2 образца, ваш вопрос вряд ли имеет какой-либо смысл.
В соответствии со спецификацией POSIX/Single Unix версии 4, издание 2018 г., когда процесс явно не указал системе, что он хочет игнорировать статусы своих дочерних процессов:
Должна генерироваться информация о состоянии (, код состояния выхода и т. д. ).
[Выходящий] процесс должен быть преобразован в зомби-процесс....
Время жизни процесса должно закончиться, как только его родитель получит информацию о состоянии процесса...
Если один или несколько потоков в родительском процессе вызывающего процесса заблокированы в вызове wait (), waitid ()или waitpid ()в ожидании завершения процесса, один (или, если любой из них вызывает waitid ()с WNOWAIT, возможно, больше )из этих потоков должны получить информацию о статусе [выходящего] процесса... и разблокироваться.
SIGCHLD должен быть отправлен родительскому процессу.
Обратите внимание на последний пункт -SIGCHLD
всегда генерируется (, если только родитель не указал его игнорировать )!
Обновление
Я протестировал оба фрагмента вашей программы, завернутые в заглушку, которую я считаю правдоподобной. Оба успешно запускаются. Вот 2 полных исходных кода программы и вывод терминала:
Полный пример 1.1:
#include <stdio.h>
#include <sys/wait.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if( pid == 0 ) {
printf("child\n");
printf("%d\n", pid);
}
else {
printf("Parent\n");
printf("%d\n", pid);
wait(NULL);
sleep(10);
}
}
Полный пример 1.2:
#include <stdio.h>
#include <sys/wait.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if( pid == 0 ) {
printf("child\n");
printf("%d\n", pid);
}
else {
printf("Parent\n");
printf("%d\n", pid);
sleep(10);
}
}
//64-bit Mac Mini./
$ make s1 s2 ;./s1 ;./s2
make: `s1' is up to date.
make: `s2' is up to date.
Parent
46431
child
0
Parent
46449
child
0
//64-bit Mac Mini./
$