pthread_atfork(3)

pthread_atfork3

Register fork handlers

Usage

#include <pthread.h>

int

pthread_atfork(void *preparevoid, void *parentvoid, void *childvoid);

Library

POSIX Threads Library (libpthread, -lpthread)

Overview

The pthread_atfork() function declares fork handlers to be called before and after fork(2), in the context of the thread that called fork(2).

The handlers registered with pthread_atfork() are called at the moments in time described below:

prepare

Before fork(2) processing commences in the parent process. If more than one prepare handler is registered they will be called in the opposite order they were registered.

parent

After fork(2) completes in the parent process. If more than one parent handler is registered they will be called in the same order they were registered.

child

After fork(2) processing completes in the child process. If more than one child handler is registered they will be called in the same order they were registered.

If no handling is desired at one or more of these three points, a null pointer may be passed as the corresponding fork handler.

Return values

If successful, the pthread_atfork() function will return zero. Otherwise an error number will be returned to indicate the error.

Errors

The pthread_atfork() function will fail if:

[ENOMEM]

Insufficient table space exists to record the fork handler addresses.

Releases

49 releases since FreeBSD 6.0-RELEASE; the text changed 33 times.

  1. 6.0–6.3
  2. 6.4
  3. 7.0
  4. 7.1
  5. 7.2
  6. 7.3
  7. 7.4
  8. 8.0
  9. 8.1
  10. 8.2
  11. 8.3
  12. 8.4
  13. 9.0
  14. 9.1
  15. 9.2
  16. 9.3
  17. 10.0
  18. 10.1
  19. 10.2
  20. 10.3
  21. 10.4
  22. 11.0
  23. 11.1
  24. 11.2
  25. 11.3
  26. 11.4
  27. 12.0
  28. 12.1
  29. 12.2
  30. 12.3
  31. 12.4
  32. 13.0–13.2
  33. 13.3–15.1
  34. 16.0

Standards

The pthread_atfork() function is expected to conform to IEEE Std 1003.1 (“POSIX.1”).

Authors

This manpage was written by Alex Vasylenko ⟨[email protected]⟩.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.