strdup函数是什么用法?在信号处理函数和多线程函数中是否能使用strdup
|
南柯
|
2023 |
|
cxlove
|
1970 |
|
vainner
|
1763 |
| 4 |
1000310428赵成帅
|
1718 |
| 5 |
XiaoWen
|
1710 |
| 6 |
1000380213洪伟焕
|
1701 |
| 7 |
weiben
|
1684 |
| 8 |
|
1678 |
| 9 |
1100310131曾翔宇
|
1664 |
| 10 |
hongwh
|
1653 |
// 我们来看该函数的原型 char * __strdup (const char *s) { size_t len = strlen (s) + 1; void *new = malloc (len); if (new == NULL) return NULL; return (char *) memcpy (new, s, len); }可见该函数中会申请内存,而malloc内部会有锁.一旦在信号处理函数(冲断)中调用,可能导致重入,从而引起死锁.
同时该函数时线程安全的,可以在多线程中使用,因为内部有锁,保证了不可重入.