Я пытаюсь закодировать чат в C с графическим интерфейсом.С одной стороны, у меня есть клиент для моего чата, с другой стороны, у меня есть приложение GTK для отображения моего чата.Чтобы запустить их обоих одновременно, я буду использовать pthread (открытый для других предложений).
Моя проблема в том, что мне нужны и argc, и argv, чтобы мой клиент работал правильно.Из того, что я видел, pthread_create () принимает в качестве аргумента функцию для выполнения и только один аргумент.Из других тем я видел, что я мог бы использовать структуру данных, чтобы содержать их обе, но, похоже, не могу правильно их привести.Вот что у меня есть:
typedef struct {
int *argc;
char ** argv;
} args_list;
void * simple_client(void * arg){
int argc = (int) arg->argc;
char * argv[] = (char *) arg->argv;
printf("in thread : %d / %s, %s \n", argc, argv[0], argv[1]);
return 0;
}
int main(int argc, char * argv[])
{
printf("int main : %d / %s, %s \n", argc, argv[0], argv[1]);
args_list * args = malloc(sizeof *args);
args-> argc = &argc;
args-> argv = &argv;
pthread_t thread1;
if (pthread_create(&thread1, NULL, simple_client, args)) {
perror("pthread_create");
return EXIT_FAILURE;
}
if (pthread_join(thread1, NULL)) {
perror("pthread_join");
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Отсюда я получаю: error: запрос на член 'argc' во что-то, не являющееся структурой или объединением из int argc = (int) arg-> argc;и то же самое с argv из char * argv [] = (char *) arg-> argv;
Что будет причиной этих ошибок?И как вы думаете, это хороший способ реализовать онлайн-чат с графическим интерфейсом GTK?
Заранее спасибо