errno - ToguchiYuto/linuxsystemprogram GitHub Wiki

関数を実行したとき、実行に失敗した場合、-1が返される。(関数によって返り値は異なるが一般的には-1が返される。) しかし、グローバル変数のerrnoにはエラーになった要因が記録される。 以下の例では、execlに存在しない引数である/bin/lssを指定しています。 このプログラムを実行するとperror(errnoに対応するエラーメッセージを出力する関数)にてNo such file or directoryが出力されます。 また、errnoを確認すると2になっていることがわかります。

#include <unistd.h>
#include <stdio.h>
#include <errno.h>

void main(){
    int ret;
    errno = 0;
    ret = execl("/bin/lss", "ls", "/home/debug/linux_system_program/workdir", NULL);
    if(ret == -1){
        perror("execl error");
        printf("%d\n", errno);
    }
}
[debug@localhost linux_system_program]$ ./a.out
execl error: No such file or directory
2
[debug@localhost linux_system_program]$ 

errnoについては、manコマンドや以下のURLから確認することができます。

ERRNO

⚠️ **GitHub.com Fallback** ⚠️