将argv [1]作为参数传递给pthread_create。

时间:2014-04-14 20:26:03

标签: c pthreads void-pointers arrays

我正在尝试创建一个采用argv[1]字符串的线程并将其传递给我的函数。这是我试图传递它的代码。

if(pthread_create(&thread1, NULL, getMax, &argv[1]) != 0){
    printf("ERROR createing the thread\n");
    return 1;
}

这是我在pthread_create函数中调用的函数。

void * getMax(void * f){
char * fileName = (char*)f;
printf("%s\n\n",fileName);
}

我相信我的问题是当我将它转换回字符指针时。 printf函数打印出几个随机字符。如果我调用函数传递一个字符串就行了。

pthread_create(&thread1, NULL, getMax, "This Works");

如果有人可以解释如何强制转换argv[1],那么它的行为就像一个非常受欢迎的字符数组。

1 个答案:

答案 0 :(得分:6)

请记住,&argv[1]char*[],即指向字符的指针数组。将其转换为char *,即指向字符的指针不正确。

尝试:

pthread_create(&thread1, NULL, getMax, argv[1]);