C- Linux-创建一个线程并传入一个缓冲区

时间:2018-06-07 05:15:39

标签: c linux pthreads

用户传入输入,此输入存储在argv [2]中。我将此值存储到缓冲区,然后尝试通过我的pthread_create函数将该值传递给另一个函数。但是,这会扭曲缓冲区的值。

我传入输入,可能是" Hello",然后当它被打印在" printFiles"功能,它的胡言乱语。我该如何解决这个问题?

void *printFiles(void *file);

int main(int argc, char **argv)

{
    pthread_t thread;

    char *store = argv[2];

   char *buffer = (malloc(500)); 

   strcpy(buffer, store);

    pthread_create(&thread, NULL, printFiles, (void *)&buffer);
    pthread_join(&thread, NULL);
return 0;


}

void *printFiles(void *file)
{
    printf("%s\n", file);

}

1 个答案:

答案 0 :(得分:3)

buffer已经是一个指针。当你这样做时你给线程一个指向指针的指针,然后你把它作为函数中的指针处理:

pthread_create(&thread, NULL, printFiles, (void *)&buffer);

只需将指针传递给线程:

pthread_create(&thread, NULL, printFiles, (void *)buffer);