Я работаю над Mac OSX и использую bash в терминале. Я программирую на C, и у меня возникают проблемы с использованием system() в цикле for. Я понимаю, что я пытаюсь сделать, может быть выполнено с помощью сценария оболочки, но я пытаюсь распараллелить процесс, и в настоящее время я знаю, как это сделать с программированием openmp в C.Обновление строки в цикле for, используемой для передачи в систему
Общая идея - позвонить исполняемый файл ./program с тремя входами для этой программы: целым числом, строкой и двойным. Я хотел бы назвать программу 100 раз с различными входами. В настоящее время я поражен, пытаясь понять, как передать строку в system(), которая обновляется циклом for. Я должен отметить, что строка («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;
}
Одна ошибка, которую я получаю, очевидно, если вы знаете, как зЬгсру работы (которые я на самом деле не), является то, что я передаю это слишком много аргументов. Ему нравится только 2: strcpy (строка 1, строка 2). Я был вдохновлен, чтобы попробовать это, прежде чем понимать strcpy, подражая тому, как печатать два раза, целые числа и т. Д.
Является ли это каким-то другим способом, я могу выполнить то, что я пытаюсь сделать? Спасибо за любую помощь, которую вы, ребята, можете предложить.
Большое спасибо, это именно то, что мне было нужно. Я считаю, что программа работает, однако, я не думаю, что она работает параллельно, и это то, что мне нужно будет изучить ... Еще раз спасибо за вашу помощь. –