gpt4 book ai didi

c : how to use system() to launch simultaneoulsy N programs but keeping N
转载 作者:行者123 更新时间:2023-11-30 17:49:28 25 4
gpt4 key购买 nike

我有一个名为 mc 的代码,我想使用不同的输入文件执行数千次。要调用代码,只需输入一个:

./mc -sim my_input_file

我想编写一个小型辅助程序,它允许我运行该程序数千次,但每次只运行 N 次 mc (每个处理器执行一次,假设我有 N 个处理器)

到目前为止我所做的是创建一个辅助程序,其中主要包含:

unsigned int N_processors(8);
unsigned int m(0);
for(unsigned int i(0); i<1000;i++){
system("./mc -sim " + file[i] +"&"); /*file[i] is the ith input file*/
m++;
while(m>=N_processors){
usleep(1e6);
if(/*test condition*/){m--;}
}
}

我的问题是我不知道应该用什么替换/*测试条件*/

最佳答案

如果你使用的是 Unix 系统,你最好使用 fork() 而不是 system()。因此,您可以在启动另一个进程之前检查一个进程是否已完成。

类似的事情:

unsigned int N_processors(8);
unsigned int m(0);
int status = 0;
pid_t* pID = new pid_t[pCount];
for(unsigned int i(0); i<1000;i++){
{
pid= fork()
if(!pid) // child process
{
system("./mc -sim " + file[i] +"&"); /*file[i] is the ith input file*/
}
else
{
nbfork++;
if(nbfork >= N_processors)
{
wait(&status); // waiting for a child to finish before spawning another one
nbfork--;
}
}
}

未测试

关于c : how to use system() to launch simultaneoulsy N programs but keeping N<N_processors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17807234/

25 4 0

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