gpt4 book ai didi

通过 system() 在 Cygwin 中创建多个线程并调用其他可执行文件?

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:45 24 4
gpt4 key购买 nike

我正在 Cygwin 中进行一个项目。尝试在 C 中创建多个线程,并且每个线程使用 system() 函数通过命令行调用另一个可执行文件,结果发现事情无法正常工作。具体来说,我的代码是这样的:

#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS 5

void *PrintHello(void *threadid)
{
long tid;
tid = (long)threadid;
system("date ");
pthread_exit(NULL);
}

int main (int argc, char *argv[])
{
pthread_t threads[NUM_THREADS];
int rc;
long t;

for(t=0; t<NUM_THREADS; t++){
printf("In main: creating thread %ld\n", t);
rc = pthread_create(&threads[t], NULL, PrintHello, (void *)t);
if (rc){
printf("ERROR; return code from pthread_create() is %d\n", rc);
exit(-1);
}
}
pthread_exit(NULL);
}

但它不起作用。我得到的错误是堆栈溢出的段错误。无论如何,对于如何通过创建多个线程并行调用系统 shell 中的其他可执行文件有想法吗?谢谢。

最佳答案

添加这段代码:

for(t=0; t<NUM_THREADS; t++){
pthread_join(threads[t], NULL);
}

之前

pthread_exit(NULL);

main() 中调用。

关于通过 system() 在 Cygwin 中创建多个线程并调用其他可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4061390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com