1

我在 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)。

4

1 回答 1

0

尝试使用spawnposix_spawn。它应该替换 fork + exec。

于 2012-08-21T16:29:49.907 回答