我对这段代码有疑问,因为这个循环没有正确地将参数传递给子进程并使用 fork 生成一些错误。
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 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 个参数的子代码(stampa 与 write 相同,但具有 -1 控制)