2

このサイクルは息子プロセスに引数を正しく渡さず、フォークでエラーを生成するため、このコードに問題があります。

nproc は 5 として作成する数値プロセスです。たとえば、x は 1 の値に設定され、新しいプロセスに 1,2,3 として渡したいため、すべてのプロセスを数値としてファイルに書き込みます...

私は私ができるかわかりません..助けてください

しかし、2 番目のパラメーター 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",&param,&param1,(char *)NULL);
           write(STDOUT,"fork error ", 11);
           }
 else { write(STDOUT,"fork error else ", 15); }
 x++;           
} 

int main(int argc, char *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 つのパラメーターを取得するコード (スタンパは書き込みと同じですが、-1 コントロール付き)

4

1 に答える 1