execl的返回值

我正在运行execl函数来通过我的代码编译程序。 我想检查编译是否正确。 所以我写了b = execl("usr/bin/gcc","cc",path,NULL); 然后检查if( b==-1) 。 但即使汇编中存在错误,它也没有进入if语句。 有什么想法吗? 谢谢!

 int b=0; if ((pid1 = fork())<0) perror("Error forking"); else { if(pid1==0) b= execl("/usr/bin/gcc","cc",path,NULL); else wait(&status); } if(b==-1) printf("\n--------\n"); 

如果exec成功,它将永远不会返回。 成功意味着能够找到并启动命令。 如果不成功,则返回-1。

您需要的是从父进程中的wait中使用的status提取命令的退出值。

您有一些宏来确定子进程运行的状态。

  • WIFEXITED(status)将通过调用exit来告诉您命令是否停止
  • 然后你就可以通过WEXITSTATUS(status)获得退出状态。

如果此status等于0,那么您将知道该命令成功运行,任何其他值意味着该命令无法正常执行其任务。