本文主要是介绍Linux网络编程--文件属性fcntl函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*使用fcntl控制文件符*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>int main(void)
{int flags = -1;int accmode = -1;/*获得标准输入的状态的状态*/flags = fcntl(0, F_GETFL, 0);if( flags < 0 ){/*错误发生*/printf("failure to use fcntl\n");return -1;}/*获得访问模式*/accmode = flags & O_ACCMODE; if(accmode == O_RDONLY)/*只读*/printf("STDIN READ ONLY\n");else if(accmode == O_WRONLY)/*只写*/printf("STDIN WRITE ONLY\n");else if(accmode ==O_RDWR)/*可读写*/printf("STDIN READ WRITE\n");else/*其他模式*/printf("STDIN UNKNOWN MODE");if( flags & O_APPEND )printf("STDIN APPEND\n");if( flags & O_NONBLOCK )printf("STDIN NONBLOCK\n");return 0;
}
例子一:使用函数int fcntl(int fd,int cmd);返回值为新的文件描述符/*使用fcntl修改文件的状态值*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>/*strlen函数*/#define NEWFD 8
int main(void)
{char buf[] = "FCNTL";int fd = open("test.txt", O_RDWR);printf("the file test.txt ID is %d\n",fd);/*获得文件状态*/ fd = fcntl(fd, F_GETFD);printf("the file test.txt ID is %d\n",fd);fd = NEWFD;/*将状态写入*/fcntl(NEWFD, F_SETFL, &fd);/*向文件中写入字符串*/write(NEWFD, buf, strlen(buf));close(NEWFD);return 0;
}例子二:使用函数int fcntl(int fd,int cmd,long arg);返回值为获得的响应标志位
/*使用fcntl修改文件的状态值*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>/*strlen函数*/int main(void)
{int flags = -1;char buf[] = "FCNTL";int fd = open("test.txt", O_RDWR);/*获得文件状态*/ flags = fcntl(fd, F_GETFL, 0);/*增加状态为可追加*/flags |= O_APPEND;/*将状态写入*/flags = fcntl(fd, F_SETFL, &flags);if( flags < 0 ){/*错误发生*/printf("failure to use fcntl\n");return -1;}/*向文件中写入字符串*/write(fd, buf, strlen(buf));close(fd);return 0;
}
/*使用fcntl获得接收信号的进程ID*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>#define NEWFD 8
int main(void)
{int uid; /*打开文件test.txt*/int fd = open("test.txt", O_RDWR);/*获得接收信号的进程ID*/ uid = fcntl(fd, F_GETOWN);printf("the SIG recv ID is %d\n",uid);close(fd);return 0;
}
/*使用fcntl设置接收信号的进程ID:1000*/
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>#define NEWFD 8
int main(void)
{int uid; /*打开文件test.txt*/int fd = open("test.txt", O_RDWR); /*获得接收信号的进程ID*/ uid = fcntl(fd, F_SETOWN,1000); close(fd); return 0;
}
这篇关于Linux网络编程--文件属性fcntl函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!