当前位置: 技术问答>linux和unix
system() 返回值问题
来源: 互联网 发布时间:2016-03-27
本文导语: 这段代码在单独运行的时候system()返回值是0;但是放在子进程中运行system()返回-1,不知道是为什么? sprintf(tmp,"g++ /acm/ojs/tmp/%d.cpp -o /acm/ojs/tmp/%d -ansi -fno-asm -Wall -lm -DONLINE_JUDGE --static 2> /acm/ojs/err/%d.txt",Runid,Exe...
这段代码在单独运行的时候system()返回值是0;但是放在子进程中运行system()返回-1,不知道是为什么?
sprintf(tmp,"g++ /acm/ojs/tmp/%d.cpp -o /acm/ojs/tmp/%d -ansi -fno-asm -Wall -lm -DONLINE_JUDGE --static 2> /acm/ojs/err/%d.txt",Runid,Exeid,Runid);
if(system(tmp)!=0)//编译代码并给出exe文件id
{
sprintf(tmp,"update Status set Judgestatus =-997 where Runid=%d;",Runid);
mysql_query(&mysql,tmp);//如果编译没通过,给出错误信息:CE -997
return -1;
}
sprintf(tmp,"g++ /acm/ojs/tmp/%d.cpp -o /acm/ojs/tmp/%d -ansi -fno-asm -Wall -lm -DONLINE_JUDGE --static 2> /acm/ojs/err/%d.txt",Runid,Exeid,Runid);
if(system(tmp)!=0)//编译代码并给出exe文件id
{
sprintf(tmp,"update Status set Judgestatus =-997 where Runid=%d;",Runid);
mysql_query(&mysql,tmp);//如果编译没通过,给出错误信息:CE -997
return -1;
}
|
你可以在system前打印一下tmp的值,确保传递的参数没问题。在system后perror看看具体原因。