可以利用fcntl来获取一个fd的属性,然后通过掩码获知是否有某个具体属性 #include <fcntl.h> #include <stdio.h> #include <stdlib.h> int main() { int fd = open("test", O_RDONLY | O_APPEND, S_IRUSR); int flags = fcntl(fd, F_GETFL); if (flags == -1) { perror("fcntl"); exit(1); } else { int access_mode = flags & O_ACCMODE; switch(access_mode) { case O_RDWR: printf("wr"); break; case O_RDONLY: printf("r"); break; default: printf("w"); } printf("\t"); if (flags & O_APPEND) { printf("append "); } if (flags & O_CREAT) { printf("create "); } if (flags & O_TRUNC) { printf("truncate "); } printf("\n"); } return 0; } 看了下fdopen的源码,似乎仅需要判断O_ACCMODE部分是否允许了读/写权限就够了。
可以利用fcntl来获取一个fd的属性,然后通过掩码获知是否有某个具体属性
看了下fdopen的源码,似乎仅需要判断O_ACCMODE部分是否允许了读/写权限就够了。