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から確認することができます。