c - 如何将 char* argv[] 传递给 pthread_create?

标签 c

我正在尝试将传入主线程的任何参数传递给我使用“pthread_create”创建的“子线程”。

void *threadMainLoop(void *arg){
    char *arguments = (char*)arg;
    printf("arg 1 - %s\n", arguments[1]);

}

int main(int argc, char *argv[]){
    printf("Start of program execution\n");

    rc = pthread_create(&outboundThread, NULL, threadMainLoop, (void *) argv);
    printf("Thread create rc: %i, %d\n", rc, outboundThread);
    if(rc != 0){
        printf("Thread creation failed\n");
        exit(1);
    }
    pthread_join(outboundThread, NULL);
    return 0;
}

上面的代码不起作用,你能告诉我如何在线程中访问 ARGV 数组,如“argv[0]”等吗?

最佳答案

main 中的 argv 是一个 char**,而不是 char*,所以就是这样您应该将其转换回 threadMainLoop

关于c - 如何将 char* argv[] 传递给 pthread_create?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850226/

相关文章:

c - 哪个代码在 C 中执行得更快?

c - 在 C 中在运行时获取变量的类型

c++ - scanf() 语句中的格式字符串 "%*[^\n]"指示什么?赋值抑制器 (*) 和否定扫描集 ([^) 如何一起工作?

从 C 脚本调用 Perl 脚本,对文本文件进行排序

c - 如何找到给定库名称(如 libfoo.so.1)的完整文件路径?

将 sockaddr_in 作为参数传递时,connect() 函数失败

c - 取消引用三重指针

c - 在c中声明大小数组

c - 如何设置发送数据包的 TCP 选项?

c - 实现零长度数组的另一种方法?