Linux中atfork的使用
Posted startFromWeb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中atfork的使用相关的知识,希望对你有一定的参考价值。
#include <pthread.h>
int pthread_atfork(void (*prepare)(void), void (*parent)(void),
void (*child)(void));
调用fork时,内部创建子进程前在父进程中会调用prepare,内部创建子进程成功后,父进程会调用parent,子进程会调用child。
看个例子
#include <stdio.h>
#include <time.h>
#include <pthread.h>
#include <unistd.h>
void prepare(void)
printf("pid = %d prepare ...\\n", static_cast<int>(getpid()));
void parent(void)
printf("pid = %d parent ...\\n", static_cast<int>(getpid()));
void child(void)
printf("pid = %d child ...\\n", static_cast<int>(getpid()));
int main(void)
printf("pid = %d Entering main ...\\n", static_cast<int>(getpid()));
pthread_atfork(prepare, parent, child);
fork();
printf("pid = %d Exiting main ...\\n",static_cast<int>(getpid()));
return 0;
运行结果
pid = 24113 Entering main
pid =24113 prepare...
pid =24114 child...
pid=24114 Exiting main....
pid=24113 parent....
pid=24113 Exiting main....
以上是关于Linux中atfork的使用的主要内容,如果未能解决你的问题,请参考以下文章
链接错误:Armadillo 库中的“未定义对‘pthread_atfork’的引用”
Android NDK cannot locate symbol "__register_atfork"的一次经典定位分析~
Android NDK cannot locate symbol "__register_atfork"的一次经典定位分析~