嵌入式学习小组
直播中

康辅佑

7年用户 955经验值
擅长:控制/MCU
私信 关注

在linux共享库下,调用共享库函数时,程序卡死在函数中的pid=fork()这里的原因?

在linux共享库下,调用共享库函数时,程序卡死在函数中的pid=fork()这里,来个大佬指导指导原因...

回帖(1)

周煌煦

2024-1-16 16:04:18
可能是因为在共享库函数中调用fork()函数导致的。

在Linux中,fork()函数创建进程,如果调用fork()函数的进程是多线程的,那么新创建的进程将继承调用线程的上下文,包括所有线程、信号处置和锁状态等。然而,如果在多线程进程中调用fork()函数,会导致所有线程的上下文状态被复制,所有锁和其他线程同步原语的状态也会被复制。

在共享库中调用fork()函数可能会导致死锁,因为共享库函数被多个线程使用,并且每个线程都可能持有锁。如果在共享库函数中调用fork()函数,将导致锁状态的不一致,从而导致死锁。

解决方法是将fork()函数调用移到共享库函数的调用者中。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分