我正在运行 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");
Run Code Online (Sandbox Code Playgroud)
如果exec成功,它将永远不会返回。成功意味着能够找到并启动该命令。如果不成功它将返回-1。
您需要的是从父进程status中使用的命令中提取命令的退出值。wait
您有一些宏来确定子进程的运行状态。
WIFEXITED(status)会告诉你命令是否因调用而停止
exitWEXITSTATUS(status)。如果该值status等于 0,那么您将知道该命令已成功运行,任何其他值都意味着该命令无法正常执行其任务。
| 归档时间: |
|
| 查看次数: |
15574 次 |
| 最近记录: |