C- Linux - создание потока и передача в буфер - PullRequest
0 голосов
/ 07 июня 2018

Пользователь передает данные на вход, этот вход сохраняется в 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 голосов
/ 07 июня 2018

buffer уже указатель.Когда вы делаете это, вы даете потоку указатель на указатель , а затем обрабатываете его как просто указатель в функции:

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

Просто передайте указатель потоку:

pthread_create(&thread, NULL, printFiles, (void *)buffer);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...