fcntl
可以重新设置读,写,追加,非阻塞等标志(File Status Flag),而不必open文件;
int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
头文件 include <unistd.h> include <fcntl.h>;
cmd:以F_GETFL (获取)和 F_SETFL(设置)为例;
int flags = fcntl(STDIN_FILENO, F_GETFL);
flags |= O_NONBLOCK;(非阻塞);
int val = fcntl(atoi(argv[1], F_GETFL));
val & O_ACCMODE(访问权限);
通过fcntl设置当前进程如何访问设备或文件都访问控制属性,如读,写,追加,非阻塞,加锁等,但并不设置文件或设备本身都属性,如文件的读写权限,串口波特率等。