0
我試圖執行並安排自己從文件中讀取的進程列表。這些文件以隨機順序運行,我只是好奇爲什麼會發生這種情況。我在第一個,第二個等文件中有簡單的打印語句,告訴哪些文件正在運行,並且它們總是以不同的(看似隨機的)順序打印。到目前爲止,它並沒有搞亂我的功能,我只是好奇這是爲什麼。過程控制器以隨機順序運行文件
的main.c下面
int main(int argc, char ** argv) {
pid_t pid[50];
pid_t wpid;
int i, j;
int status = 0;
char *newenvp[] = {NULL};
char *newargv[] = {"./files.txt", NULL};
printf("Before forking in the parent\n");
int numProgs = readPrograms();
for (i=0; i<numProgs; i++) {
pid[i] = fork();
if (pid[i] < 0) {
perror("fork error");
exit(EXIT_FAILURE);
}
else if (pid[i] == 0) {
printf("Child process running\n");
execve(programs[i], newargv, newenvp);
perror("execve error");
exit(EXIT_FAILURE);
}
}
for (i=0; i<numProgs; i++) {
wait(&status);
}
return 0;
}
char* programs[50];
int readPrograms();
readPrograms.c下面
int readPrograms() {
int i=0;
char line[50];
int numProgs = -1;
FILE *file;
file = fopen("files.txt", "r");
while(fgets(line, sizeof(line), file)!=NULL) {
line[strlen(line)-1] = '\0';
programs[i]=strdup(line);
i++;
numProgs++;
}
fclose(file);
return numProgs;
}
files.txt下面
./first
./second
./third
./fourth
'程序[i]'人口?內存分配? – 2014-10-29 07:51:58
@SouravGhosh:'strdup'返回一個指向新字符串(它是源字符串的副本)的指針。這個新字符串使用'malloc'分配 – 2014-10-30 14:19:17