我在 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)。
最佳答案
尝试使用 spawn
或 posix_spawn
。它应该取代 fork + exec。
关于c - 无法使用线程编码来替代 fork(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12059143/