execve函数正常退出时,if语句如何起作用?

如题,从CSAPP课程第八章异常控制中我了解到了execve函数只有失败时会返回-1,否则不返回。那请问不返回时if语句怎么起作用?

代码片段入下:

if(execve(argv[0], argv, environ)<0)
{
    printf("%s: Command not found.\n", argv[0]);
    exit(0);
}

 

不返回时,if条件不会满足,通常编译器会将有返回值的函数返回一个正数,虽然在代码中没有体现返回,但实际上有默认返回值。
看以下例子

#include<stdio.h>

int fun(int a)
{
        if(a==0) return -1;
}

int main()
{
        printf("%d\n",fun(0));
        printf("%d\n",fun(1));
        printf("%d\n",fun(2));
        printf("%d\n",fun(3));
        printf("%d\n",fun(3));
        printf("%d\n",fun(3));
        return 0;
}

输出:
-1
3
2
2
2
2

其他你也可以自己试试,关于指针或其他作为函数参数等
https://blog.csdn.net/weixin_43641850/article/details/100567794