아래는 dirfd 아래에 asecName 이라는 파일이 regular file인지 check 하는 코드
ex) dirfd = "/mnt/secure/asec/"
asecName = "1234"
이면 /mnt/secure/asec/1234 라는 regular file 이 있는지 check 해 준다.
struct stat sb;
bool ret = (fstatat(dirfd, asecName, &sb, AT_SYMLINK_NOFOLLOW) == 0)
&& S_ISREG(sb.st_mode);
http://www.tutorialspoint.com/unix_system_calls/stat.htm
The following POSIX macros are defined to check the file type using the st_mode field:
Tag | Description |
---|---|
S_ISREG(m) | is it a regular file? |
S_ISDIR(m) | directory? |
S_ISCHR(m) | character device? |
S_ISBLK(m) | block device? |
S_ISFIFO(m) | FIFO (named pipe)? |
S_ISLNK(m) | symbolic link? (Not in POSIX.1-1996.) |
S_ISSOCK(m) | socket? (Not in POSIX.1-1996.) |
The following flags are defined for the st_mode field:
S_IFMT | 0170000 | bitmask for the file type bitfields |
S_IFSOCK | 0140000 | socket |
S_IFLNK | 0120000 | symbolic link |
S_IFREG | 0100000 | regular file |
S_IFBLK | 0060000 | block device |
S_IFDIR | 0040000 | directory |
S_IFCHR | 0020000 | character device |
S_IFIFO | 0010000 | FIFO |
S_ISUID | 0004000 | set UID bit |
S_ISGID | 0002000 | set-group-ID bit (see below) |
S_ISVTX | 0001000 | sticky bit (see below) |
S_IRWXU | 00700 | mask for file owner permissions |
S_IRUSR | 00400 | owner has read permission |
S_IWUSR | 00200 | owner has write permission |
S_IXUSR | 00100 | owner has execute permission |
S_IRWXG | 00070 | mask for group permissions |
S_IRGRP | 00040 | group has read permission |
S_IWGRP | 00020 | group has write permission |
S_IXGRP | 00010 | group has execute permission |
S_IRWXO | 00007 | mask for permissions for others (not in group) |
S_IROTH | 00004 | others have read permission |
S_IWOTH | 00002 | others have write permission |
S_IXOTH | 00001 | others have execute permission |
'Programming > Linux_Platform' 카테고리의 다른 글
signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr (0) | 2017.01.23 |
---|---|
makedev (0) | 2016.10.31 |
find PID as process name and send signal using shell script (0) | 2016.10.06 |
android adb 에서 sh : shell script file 이 실행 안될때 (0) | 2016.10.05 |
get pid by process name - example source code (예제 코드) (0) | 2016.10.04 |