将argv和argc传递给线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将argv和argc传递给线程相关的知识,希望对你有一定的参考价值。
我的程序接收来自用户的参数
int main(int argc, char *argv[])
我在一些线程中有这个功能(我无法更改功能):
func(&argc, &argv);
正如您所看到的,我需要调用线程,并在此线程内部使用这些参数调用func
。我看到有一种方法可以使用struct发送线程多个参数。
结构如何看起来像?我如何将这些参数复制到结构中?
答案
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);
另一答案
想提一下,AFAIK,你可以将命令行参数传递给线程而不复制它们(即 - 使用malloc创建一个包含它们的专用结构),因为命令行参数的生命周期是生命提供给他们的过程(主要)的时间。
干杯,
盖伊。
以上是关于将argv和argc传递给线程的主要内容,如果未能解决你的问题,请参考以下文章
以这种格式将 argv 变量传递给 main 的结果 main( int argc, char const * argv )