我正在编写一个测试程序,需要调用2个单独的exe文件,等待它们完成并输出它们的csv文件,然后读入这些结果文件。
我目前正在使用_popen
创建一个管道并向我显示输出,但在feof
看起来毫无意义之前,我并不需要任何这些并循环。
我想要的是:
有没有其他方法可以做到这一点?
编辑:玩弄我发现使用System("exe1");
基本上就是我现在所做的,但是在一行中。或者我在这里遗漏了什么?
int runTest(char* testName)
{
char psBuffer[128];
FILE *pPipe;
if ((pPipe = _popen(testName, "r")) == NULL)
{
printf("Failed to open %s", testName);
return 0;
}
while (fgets(psBuffer, 128, pPipe))
{
printf(psBuffer);
}
if (feof(pPipe))
{
printf("%s returned %d\n", testName, _pclose(pPipe));
return 1;
}
else
{
printf("Error: Failed to read the pipe to the end.\n");
return 0;
}
}
答案 0 :(得分:0)
你可以像这样穿线:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void* thread_2(void *arg)
{
system("./exec2");
pthread_exit(NULL);
}
void* thread_1(void *arg)
{
system("./exec1");
pthread_exit(NULL);
}
void* (*func_ptr[2])(void*) = { thread_1, thread_2 };
void main()
{
pthread_t thread_pool[2];
for (int i = 0; i < 2; i++)
pthread_create(&thread_pool[i], NULL, func_ptr[i], NULL);
for (int i = 0; i < 2; i++)
pthread_join(thread_pool[i], NULL);
}
希望这会对你有所帮助。