fork and existing threads?

前端 未结 2 1074
滥情空心
滥情空心 2020-11-30 06:24

On a linux system, does the child process view the existing threads the same way as the parent process ?

int main() {

  //create thread 1

  int child_pid =         


        
相关标签:
2条回答
  • 2020-11-30 06:41

    Threads are not inherited from a child process on a linux system using fork(). An in-depth source is here: http://linas.org/linux/threads-faq.html

    0 讨论(0)
  • 2020-11-30 06:55

    Threads on Linux nowadays try to stay POSIX compliant. Only the calling thread is replicated, not other threads (note that e.g. on Solaris you can choose what fork does depending on what library you link to)

    From http://www.opengroup.org/onlinepubs/000095399/functions/fork.html (POSIX 2004):

    A process shall be created with a single thread. If a multi-threaded process calls fork(), the new process shall contain a replica of the calling thread and its entire address space, possibly including the states of mutexes and other resources. Consequently, to avoid errors, the child process may only execute async-signal-safe operations until such time as one of the exec functions is called. Fork handlers may be established by means of the pthread_atfork() function in order to maintain application invariants across fork() calls.

    The POSIX 2018 specification of fork() is similar.

    0 讨论(0)
提交回复
热议问题