У меня проблема с этим кодом, потому что этот цикл не передает правильные аргументы сыну и генерирует некоторую ошибку с помощью fork.Execl (параметры передачи) в c
nproc представляет собой процесс с числами, который должен быть создан как 5, например x установлен в 1 значение, и я хочу перейти к моему новому процессу как 1,2,3, поэтому каждый процесс как число и записать его в файл ...
я не знаю, могу ли я сделать .. пожалуйста, помогите
но второй параметр righeoperazione является 5 и передается правильно, но потому, что всегда же отец код, где я поставил 2 типа Int и преобразуется в строку EXEC
/* father process*/
char param[0]="";
char param1[0]="";
for (i=0 ; i<NPROC ; i++) {
pid=fork();
if (pid==-1) { // pid=-1; error process
write(STDOUT,"fork error pid -1 ", 18);
}
else if (pid==0) {
sprintf(param1,"%d",x);
sprintf(param,"%d",righeoperazioni);
execl("processore.x","processore.x",¶m,¶m1,(char *)NULL);
write(STDOUT,"fork error ", 11);
}
else { write(STDOUT,"fork error else ", 15); }
x++;
}
INT основного (интермедиат ARGC, символ * ARGV []) {// обработка сына
int nump=0;
int righe;
int oper=0;
char nome[10];
char temp[10];
char temp1[10];
nump=atoi(argv[2]); //
oper=atoi(argv[1]); //
righe=oper;
sprintf(nome,"%d",getpid());
int report = openFile(nome,O_CREAT | O_RDWR,S_IRUSR | S_IWUSR);
sprintf(temp,"%d",nump);
sprintf(temp1,"%d",oper);
stampa(report,"Number processo : ",18);
stampa(report,temp,strlen(temp));
stampa(report,"\Number comandi : ",18);
stampa(report,temp1,strlen(temp1));
stampa(report,"\n",1);
сын код, который захват 2 параметра (Stampa такой же, как пишет, но с -1 управления)
Исправьте углубление, оно, очевидно, очень сломан. – unwind
Очень сложно сделать что-то из этого вопроса. – Terry
'write (STDOUT,« fork error else », 15);' - вам не нравится 'printf (« fork error else »);' намного лучше? В дополнение к тому, что вам не нужно подсчитывать ваш результат, вы также можете обеспечить динамический вывод :) – mah