Я пытаюсь передать переменные функции, которая вилки, большинство из них, похоже, работает, но мне нужно дать каждому идентификатор, который я пытаюсь передать в argv [5], который не объявляется ранее. Мой код продолжает сегрегацию, и я не могу понять, почему. Есть идеи?Пытаться передать переменные дочернему процессу
главный
char* arg_list_consumer[] = {
"./consume",
argv[1],
argv[2],
NULL
};
char* arg_list_producer[] = {
"./produce",
argv[1],
argv[2],
argv[3],
argv[4],
argv[5],
NULL
};
if (getppid()==1){
producerID=0;
}
if(producerID==0){
for(i=1; i<P; i++){
sprintf(arg_list_producer[5], "%d", i);
spawn ("./produce", arg_list_producer);
}
for(i=0; i<C; i++){
sprintf(arg_list_consumer[5], "%d", i);
spawn ("./consume", arg_list_consumer);
}
}
икру
int spawn (char* program, char** arg_list)
{
pid_t child_pid;
/* Duplicate this process. */
child_pid = fork();
if (child_pid != 0)
/* This is the parent process. */
return child_pid;
else {
/* Now execute PROGRAM, searching for it in the path. */
execvp (program, arg_list);
/* The execvp function returns only if an error occurs. */
fprintf (stderr, "an error occurred in execvp\n");
abort();
}
}