在c中执行(传递参数)

时间:2013-06-17 13:46:57

标签: c exec fork

我对这段代码有疑问,因为这个循环没有正确地将参数传递给子进程并用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",&param,&param1,(char *)NULL);
           write(STDOUT,"fork error ", 11);
           }
 else { write(STDOUT,"fork error else ", 15); }
 x++;           
} 

int main(int argc,char * argv []){// son process

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控制)

1 个答案:

答案 0 :(得分:0)

您正在给予execl char **而不是char *。 尝试

execl("processore.x","processore.x",param,param1,(char *)0);//EDIT!!!

同样声明param1和param的大小更多

char param1[64], param[64];

为了保持你的“短跑”整数。