Это невозможно сделать. С pthreads вы можете использовать функцию pthread_is_multithreaded_np()
, но это сделает ваш код fork()
зависимым от pthreads, и это не работает на всех платформах. И нет никакого способа сделать проверку независимо от библиотеки потоков.
Если это приложение, просто не используйте потоки и разветвление одновременно. Если вы создаете многопоточную программу, никогда не вызывайте fork()
(за исключением комбинаций fork / execv).
Если это библиотека, либо не используйте в ней fork()
, либо потребуйте, чтобы библиотека никогда не использовалась с многопоточными приложениями.
В качестве альтернативы для приложения вы можете попробовать использовать pthread_atfork(...)
, чтобы убедиться, что будет безопасно вызывать fork()
.