在C++中,我使用system(「./file blahblah」)調用可執行文件;現在,因爲有很多重複我希望把它們並行在C++中調用可執行文件,並行運行
#pragma omp parallel for
for(int i = 0; i < 999; ++i)
system("./filename blahblah");
但我敢肯定上面的都不行,因爲OMP的#pragma是C++編譯器的擴展,只能努力修改彙編C++行。 system()調用終端shell來處理命令,而#pragma omp不會影響該命令的執行。
有沒有辦法解決這個問題?我認爲在GNU中有fork()& exec()的方法,但我不知道如何。誰能幫我這個?謝謝。
循環迭代之間是否存在任何依賴關係?幾個「./filename blahblah」可以同時運行嗎?如果前者是負面的,後者是正面的,那麼你提出的解決方案可能會正常工作......只需添加一個「-fopenmp」或任何你需要的編譯器選項來激活OpenMP的支持,那可能就是這樣。 – Gilles
['system'](http://man7.org/linux/man-pages/man3/system.3.html)函數實際上調用了shell,這意味着你可以使用shell的所有功能,比如把在後面用'&'結尾處理。 –
它是特定於操作系統的。我猜你在Linux上 –