我正在使用 Mac OSX 并在终端中使用 bash。我正在用 C 编程,在 for 循环中使用 system() 时遇到问题。我意识到我想要做的事情可以用一个 shell 脚本来完成,但我正在尝试并行化这个过程,目前我只知道如何使用 C 中的 openmp 编程来实现它。
总体思路是调用可执行文件 ./program,该程序具有三个输入:整数、字符串和双精度。我想用各种输入调用程序 100 次。目前,我对如何将字符串传递给由 for 循环更新的 system() 感到震惊。我应该注意,用于输入的 ("sub") 字符串也正在更新以从不同的文件夹(格式为:folder0000、folder0001 等)获取数据!
我的尝试是这样的:
#include <stdio.h>
#include <string.h>
int main(){
int spot;
double X;
char command[50];
#pragma omp parallel for private(command, path)
for(X=0, spot=0; spot<100; X+=0.005, spot++){
char path[50];
strcpy(path, "/home/folder%04d", spot);
strcpy(command, "./program %d %s %lf", 50, path, X);
system(command);
}
return 0;
}
如果您知道 strcpy 是如何工作的(我不是真的),那么我得到的一个错误是显而易见的,那就是我传递了太多参数。它只喜欢取 2:strcpy(string 1, string 2)。在理解 strcpy 之前,我受到启发,通过模仿如何 printf double、整数等来尝试这个。
这是我可以完成我想做的事情的其他方式吗?感谢你们提供的任何帮助。