[dywang@deyu zzz]$ man 3 errno | col -b | grep -E '^\s+E(PERM|NOENT|ACCES)'
EACCES Permission denied (POSIX.1)
ENOENT No such file or directory (POSIX.1)
EPERM Operation not permitted (POSIX.1)
[dywang@deyu zzz]$ vim mainfun3.c
[dywang@deyu zzz]$ cat mainfun3.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main( int argc, char *argv[] ) {
int result;
if(argc < 3) {
printf("Require TWO arguments\n" );
return(1);
}
result = rename( argv[1], argv[2] );
if( result != 0 ) {
printf("File renaming error ");
switch(errno) {
case EPERM:
printf("%d: Operation not permitted\n", errno);
break;
case ENOENT:
printf("%d: File not found\n", errno);
break;
case EACCES:
printf("%d: Permission denied\n", errno);
break;
default:
printf("%d: Unknown error\n", errno);
}
return(2);
}
printf("%d: %s renamed to %s\n", errno, argv[1], argv[2]);
return(0);
}
[dywang@deyu zzz]$ gcc -o mainfun3 mainfun3.c
[dywang@deyu zzz]$ ./mainfun3 a b File renaming error 2: File not found
[dywang@deyu zzz]$ touch a [dywang@deyu zzz]$ ./mainfun3 a b 0: a renamed to b
[dywang@deyu zzz]$ ./mainfun3 b /root/a File renaming error 13: Permission denied
[dywang@deyu zzz]$ ./mainfun3 /sbin/blkid a File renaming error 18: Unknown error