gpt4 book ai didi

c - 从主进程的线程启动子进程是否合适

转载 作者:行者123 更新时间:2023-11-30 16:44:56 25 4
gpt4 key购买 nike

我的情况如下:

main()
{
create a thread executing function thread_func();

another_func();

}

another_func()
{
//check something and do something.
// To do something, create a child process.
// after creating child process, current thread goes in checking state again
// child process independently running.
}

thread_func()
{
infinite loop(); // checking something and doing something
}

线程是使用pthread创建的。请告诉:在一个线程中启动一个像上面这样的子进程好吗?如果这样做的话会发生什么。

子进程是否创建自己的另一个复制线程来执行thread_func()?

谢谢

最佳答案

从你的问题来看,并不清楚你想做什么。pthread_create() API 采用一个指向 void* ()(void) 类型函数的指针。实际的线程执行是在该线程上,因此如果您想在线程上创建子进程,则必须在 thread_func()

内完成

如果您使用 fork() API 创建另一个进程(这是 Linux 上的标准方式),则会创建一个单独的进程,并复制父进程的整个内存空间。但内存将是虚拟的,并标记为写入时复制,因此实际上,除非您尝试写入内存,否则内存不会被复制。

如果在调用 fork() 后还调用了 exec() 或 exec() 系列中的任何其他 API,那么您无需关心复制的内存。在 exec() API 之后,子进程将拥有与父进程分开的自己的内存空间。

关于c - 从主进程的线程启动子进程是否合适,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44298569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com