1
execl 함수를 실행하여 코드를 통해 프로그램을 컴파일하고 있습니다. 컴파일이 제대로되었는지 확인하고 싶습니다. 그래서 나는 b = execl("usr/bin/gcc","cc",path,NULL);
이라고 쓰고 나중에 if(b==-1)
을 확인했다. 그러나 컴파일에 오류가 있어도 if 문으로 들어 가지 않습니다. 이유가 무엇입니까? 감사합니다.execl 반환 값
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'] (http://man7.org/linux/man-pages/man3/execl.3.html) 패밀리의 함수 중 하나가 성공하면 * 반환하지 않습니다. 그들은 실패의 경우에만 반환합니다. –
그리고 컴파일에 오류가 발생하면 새로운 실행 파일이 생성되지 않으므로 "예상대로 작동하지 않으며 컴파일되지 않은 프로그램이 있습니다"라는 질문에 모순이 있습니다. . 코드는 예상대로 작동하지 않을 것입니다. * 컴파일러 오류가 있기 때문입니다. 실제로 실행할 프로그램이 없기 때문에 코드가 전혀 실행되지 않습니다. –
하지만 그게 문제 - intential 컴파일을하는 동안 오류를 만들기 위해 뭔가를 썼다면 그것은 if 문에 도달하지 못했습니다. –