我正在运行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");
答案 0 :(得分:4)
如果exec
成功,它将永远不会返回。成功意味着能够找到并启动命令。如果不成功,则返回-1。
您需要从父进程中status
中使用的wait
中提取命令的退出值。
您有一些宏来确定子进程运行的状态。
WIFEXITED(status)
会告诉您该命令是否通过调用停止
exit
WEXITSTATUS(status)
。如果此status
等于0,那么您将知道该命令成功运行,任何其他值意味着该命令无法正常执行其任务。