strdup函数是什么用法?
clarayun  发布于 2 年前 25.0k 1 0

strdup函数是什么用法?在信号处理函数和多线程函数中是否能使用strdup

话题评论 ( 1 )

  • ACSolo  发布于 2 年前 Vote: I like it   +1   Vote: I do not like it

    1. // 我们来看该函数的原型
    2. char * __strdup (const char *s)
    3. {
    4. size_t len = strlen (s) + 1;
    5. void *new = malloc (len);
    6. if (new == NULL)
    7. return NULL;
    8. return (char *) memcpy (new, s, len);
    9. }

    可见该函数中会申请内存,而malloc内部会有锁.一旦在信号处理函数(冲断)中调用,可能导致重入,从而引起死锁.

    同时该函数时线程安全的,可以在多线程中使用,因为内部有锁,保证了不可重入.