c - 无法使用线程编码来替代 fork()

标签 c multithreading fork

我在 Windows 上编码,所以 fork() 不可用。现在,我需要运行 execl(),但它是我程序的终点!我想创建一个单独的线程来运行execl(),创建成功,运行也很好。但是线程结束后我的程序仍然结束。 运行线程的函数--在wScoreget类中:-

     int refresh_score_now(){
            pthread_t t;
            if(pthread_create(&t,NULL,s.basicgetscore,&s)==-1){
                                printf("Error: wScoreget:3");
                                exit(4);
                                }

            void *a;
            if(pthread_join(t,&a)==-1){
                printf("Error: wScoreget: 4");
                exit(4);
                printf("Running thread.\n");
                getch();
            }

        }

从主调用:-

            int main(){

    wScoreget new_ws;
    new_ws.refresh_score_now();
    printf("reached to the end\n");
    getch();
    }

我期待控制台打印 - “到达终点” 但是在 execl() 上它退出了。 注意:execl() 正在运行 curl。它的输出是一个文本文件。现在,如果更改了标准输出,curl 会在控制台上显示下载时间和其他数据。无论如何,数据都会进入控制台。

有没有一种方法可以在不使用 CreateProcess 的情况下做到这一点?如果我使用 CreateProcess,我必须在 Windows 上安装哪些库(我使用的是 MingW + Codeblocks)。

最佳答案

尝试使用 spawnposix_spawn。它应该取代 fork + exec。

关于c - 无法使用线程编码来替代 fork(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12059143/

相关文章:

multithreading - Scala Process 退出但不清理线程

c++ - 如何创建进程并让它们执行不同的分配任务,例如使用 fork 从文件读取或写入文件

Grails:将选项传递给 fork 的 JVM

c - Sublime Text 3,GCC 构建系统问题

C float直译

c - 从链表中间删除节点

C - 内部有 fork()/pipe() 的 WHILE 循环

c# - 使用 cmd.exe 执行 DEL 命令的代码需要很长时间

java - 为什么在这个例子中 var 没有增加?

c - 在试图终止父进程时,子进程仍在运行