linux的一点一滴---open
open函数用于打开和创建一个文件。
所需头文件:
#include<sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
常用函数原型:
int open(const char *pathname, int flags)或者
int open(const char *pathname, int flags, mode_t mode)
函数参数解释:
pathname参数是要打开或者创建的文件名(可以包括绝对/相对路径)。
flags参数是一系列常数值(宏定义常数,以O_开头),可以选择多个常数进行按位或运算符链接起来一起使用。
flags必选项:
O_RDONLY:只读打开
O_WRONLY:只写打开
O_RDWR:读写打开
flags常用可选项:
O_APPEND:追加内容在所打开的文件结尾。
O_CREAT:若文件不存在则创建。如果使用此选项需要提供第三个参数mode.
O_EXCL:如果同时指定 了O_CREAT,并且文件已存在,则出错返回。可用来测试一个文件是否存在。
O_TRUNC:如果文件已存在,并且以只写或可读可写方式打开,则将其长度截断为0字节。
O_NONBLOCK:可设置设备文件以非阻塞打开。
mode参数用来设置文件权限位(八进制表示):
1-----》执行
2-----》写
4-----》读
函数返回值:
open函数执行成功返回当前未使用的最小文件描述符(file descriptor),失败返回-1(并且设置出错信息)。
例:
touch file
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int fd = open("file", O_RDWR | O_CREAT);
printf("fd = %d\n", fd);
return 0;
}
执行结果为fd = 3;
linux的一点一滴---open的更多相关文章
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- 《Linux内核分析》期中总结
两个月Linux内核的学习,让我理解了Linux内核的基本工作原理,包括进程管理.内存管理.设备驱动.文件系统,从分析内核到了解整个系统是如何工作的.如何控制管理资源分配.进程切换并执行.各种策略和结 ...
- 彻底理解Cisco/Linux/Windows的IP路由
-1.只要理解实质,名称并不重要! 很多使用Linux的网络高手在面对Cisco管理员的诸如管理距离,路由度量等词汇时,还没有PK就自觉败下阵来了.我觉得这实在太可惜了,大家本是一家,为何这么为难对方 ...
- 20165234 预备作业3 Linux安装及学习
一.基于VirtualBox虚拟机安装Ubuntu 这是我首次安装虚拟机,也是首次接触Linux系统.对于下学期要运用的这个操作系统,以及如何在自己的电脑上安装虚拟机,我还是有些期待和好奇的. 我一直 ...
- Linux及Arm-Linux程序开发笔记(零基础入门篇)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...
- 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...
- Linux从头学07:中断那么重要,它的本质到底是什么?
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- Linux 内核概述 - Linux Kernel
Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
随机推荐
- Scala学习笔记--xml
http://blog.csdn.net/beautygao/article/details/38497065 https://github.com/scala/scala-xml http://st ...
- linq学习三个实例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 初识cross apply & outer apply
1. 2. 3.参考地址: http://blog.csdn.net/htl258/article/details/4537421
- uiautomator <一> 编译运行
uiautomator testcase 一.新建Java工程 二.导入lib包 android.jar 和 uiautomator.jar ,选中点击右键Add to buildPath 三.新建测 ...
- 迁移笔记:php截取文字的方法
php内置函数 1. iconv iconv_set_encoding('internal_encoding', 'UTF-8'); $str; //字符串的声明 $num=iconv_strlen( ...
- DJANGO用户名认证一例
现在实例了用户登陆,就自带的功能.. urls.py ~~~~~~~~~~ (r'^login/$', login), (r'^logout/$',logout,{'next_page':'/logi ...
- Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL
我们在开发数据库相关的逻辑过程中, 经常检查表中是否已经存在这样的一条记录, 如果存在则更新或者不做操作, 如果没有存在记录,则需要插入一条新的记录. 这样的逻辑固然可以通过两条sql语句完成. SE ...
- MYSQL连接字符串参数详细解析(大全参考)
Connector/Net Connection String Options Reference Database=dbname;Data Source=192.168.1.1;Port=3306; ...
- bootargs中的环境变量说明和一些常用的uboot命令
bootargs中的环境变量说明和一些常用的uboot命令 一些常见的uboot命令:Help [command]在屏幕上打印命令的说明Boom [addr]启动在内存储器的内核Tftpboot通过t ...
- UVa232.Crossword Answers
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...