C-Linux-创建线程并传入缓冲区
用户传入输入,此输入存储在argv[2]中。我将该值存储到缓冲区中,然后尝试通过pthread_create函数将该值传递给另一个函数。但是,这会扭曲缓冲区的值 我传入输入,可能类似于“Hello”,然后当它在“printFiles”函数中被打印时,它就乱七八糟了。我该如何解决这个问题C-Linux-创建线程并传入缓冲区,c,linux,pthreads,C,Linux,Pthreads,用户传入输入,此输入存储在argv[2]中。我将该值存储到缓冲区中,然后尝试通过pthread_create函数将该值传递给另一个函数。但是,这会扭曲缓冲区的值 我传入输入,可能类似于“Hello”,然后当它在“printFiles”函数中被打印时,它就乱七八糟了。我该如何解决这个问题 void *printFiles(void *file); int main(int argc, char **argv) { pthread_t thread; char *store =
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);
}
缓冲区
已经是指针。执行此操作时,为线程提供指向指针的指针,然后将其作为函数中的指针进行处理:
pthread_create(&thread, NULL, printFiles, (void *)&buffer);
只需将指针传递到线程:
pthread_create(&thread, NULL, printFiles, (void *)buffer);
缓冲区
已经是指针。执行此操作时,为线程提供指向指针的指针,然后将其作为函数中的指针进行处理:
pthread_create(&thread, NULL, printFiles, (void *)&buffer);
只需将指针传递到线程:
pthread_create(&thread, NULL, printFiles, (void *)buffer);
如果
pthread\u create()
的原型可见,则可以完全删除强制转换。如果pthread\u create()
的原型可见,则可以完全删除强制转换。