-1
複数の子プロセスの実行時間を計算するには、並列に実行され、同じ親を持つようにフォークされていますか?次のコードは、並列に実行するプロセスをフォークするか、または連続して実行しますか?同時に実行されているすべての子プロセスの合計実行時間を計算する方法は?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
void forkChildren (int nChildren) {
int i,j;
pid_t pid;
pid_t my_id;
clock_t start, end;
double cpu_time_used;
for (i = 1; i <= nChildren; i++) {
pid = fork();
if (pid == -1) {
/* error handling here, if needed */
return;
}
if (pid == 0) {
/* printf("I am a child: %d PID: %d\n",i, getpid());*/
for(j=0;j<20000000;j++)
{
if(j%100==0)
{
my_id = getpid();
}
}
return;
}
}
}
int main (int argc, char *argv[]) {
clock_t start,stop;
double elapsed;
start = clock();
if (argc < 2) {
forkChildren (2);
} else {
forkChildren (atoi (argv[1]));
}
stop = clock();
elapsed = (double)(stop - start) * 1000.0/CLOCKS_PER_SEC;
printf("Time elapsed in ms: %f", elapsed);
return 0;
}
前のコードでは、複数の出力実行時間が生成されていましたが、各プロセスごとに別々に考えています。すべてのforkされたプロセスが実行するのにかかる実行時間を計算したいと思います。