我的程序接收来自用户的参数
int main(int argc, char *argv[])
我在某个线程中有这个函数(我不能改变这个函数):
func(&argc, &argv);
如您所见,我需要调用线程,并在该线程内使用这些参数调用 func
。
我看到有一种方法可以使用结构向线程发送多个参数。
结构应该是什么样子的?以及如何将这些参数复制到结构中?
最佳答案
struct arg_holder {
int argc;
char ** argv;
};
void * thread_caller(void * arg) {
struct arg_holder arg_struct = *(struct arg_holder *)arg;
free(arg);
return func(arg_struct->argc, arg_struct->argv);
}
在 main
中:
struct arg_holder * arg_struct = malloc(sizeof(*arg_struct));
arg_struct->argc = argc;
arg_struct->argv = argv;
pthread_create(&thread_id, NULL, thread_caller, arg_struct);
关于c++ - 将 argv 和 argc 传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21483180/