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[] ...
随机推荐
- [linux] linux知识积累(不断更新中…)
一.vim知识 f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符. D 删除当前字符至行尾.D=d$ :split或new 打开一个新窗口,光标停在顶层 ...
- QDataStream类参考(串行化数据,可设置低位高位,以及版本号),还有一个例子
QDataStream类提供了二进制数据到QIODevice的串行化. #include 所 有成员函数的列表. 公有成员 QDataStream () QDataStream ( QIODevice ...
- WinDriver的一些
http://blog.csdn.net/chuajiang/article/details/2115508
- DBA 经典面试题(1)
1:列举几种表连接方式 hash join. merge join. nest loop join(cluster join). index join 2:不借助第三方工具,怎样查看sql的执 ...
- 更改debian的软件源sources.list
之前debian6这系统是在公司装的.公司有百兆光纤,多线接入,就随便选了个源,也没多大问题.现在回到家里变成了2M的ADSL,很多软件更新不下来. 更改软件源,也就修改/etc/apt/source ...
- mysql 基础技术
一.树状结构 参考http://www.cnblogs.com/kingteach/archive/2011/07/05/2098046.html )) begin declare lev int; ...
- C# 使用枚举获取对应的数组值时
using System; enum Move { walk, run } class Program { static float[] speedAry = { 50.0f, 200.0f }; p ...
- C#中通过位运算实现多个状态的判断
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 图解server端网络架构
这篇是计算机类的优质首发推荐>>>><图解server端网络架构> 467张图表讲透构建高可用高性能server实战 写给网络架构师 serverproject师的 ...
- iframe框架默认占满整个屏幕
<script language="JavaScript"> if (window != top) { top.location.href = location.hre ...