, который является неблокирующим вызовом функции, чтобы проверить, есть ли какой-либо дочерний процесс, в настоящее время работающий на
Неправильно. Это вызов, чтобы проверить, есть ли дочерний процесс, который еще не завершен. И это не только проверяет, но и пожинает прерванного ребенка, если таковой имеется. В противном случае дети могут оказаться в любом возможном состоянии, например, в тупике (что в моей книге далеко не работает ).
Все, что я хочу сделать, это проверить, есть ли какой-либо поток в данный момент, если нет, сбросить некоторые глобальные значения.
Возможно, вам следует опубликовать здесь вопрос, почему вы хотите это сделать. Похоже, вы делаете что-то ужасно неправильно.
Если вы еще не сделали pthread_join () для своих потоков, это означает, что ваши потоки уже выполняют pthread_detach (). Если у вас не было проблем с добавлением в ваши потоки pthread_detach (), я думаю, не было бы проблем с добавлением некоторого дополнительного кода в потоки, чтобы определить, что они (почти) завершены (например, sem_post ()), так что main () может заметить, что поток завершился (например, вызвав sem_trylock ()).
Если переносимость не является обязательной, то можно также периодически пытаться запрашивать номер потока процесса в ОС.
Хотя по-прежнему неверно иметь в программе IMO несколько потоков с неопределенным жизненным циклом, без какой-либо правильной синхронизации с основным потоком.