Android系统开发(6)——Linux底层输入输出
一、操作系统的体系结构
最上层就是应用程序,在应用程序中调用系统接口就能实现对硬件的操作。
二、Linux I/O系统
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF3YW5nYW5iYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
三、I/O的操作过程
当读写一个文件时,用open或create返回的文件描写叙述符fd标识该文件,将其作为參数传送给read或write.而流(如: fopen)返回的是一个FILE结构指针, FILE结构是包括有文件描写叙述符的。FILE结构函数能够看作是对fd直接操作的系统调用的封装, 它的长处是带有I/O缓存
Linux支持各种各样的文件系统格式。如ext2、ext3、reiserfs、FAT、NTFS、iso9660等等。不同的磁盘分区、光盘或其他存储设备都有不同的文件系统格式,然而这些文件系统都能够mount到某个文件夹下,使我们看到一个统一的文件夹树,各种文件系统上的文件夹和文件我们用ls命令看起来是一样的,读写操作用起来也都是一样的,这是怎么做到的呢?Linux内核在各种不同的文件系统格式之上做了一个抽象层,使得文件、文件夹、读写訪问等概念成为抽象层的概念,因此各种文件系统看起来用起来都一样。这个抽象层称为虚拟文件系统(VFS,Virtual Filesystem)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGF3YW5nYW5iYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
四、Linux底层输入输出
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h> int main(int argc, char *argv[]){
//open file
if(argc<2){
printf("please input filename\n");
exit(1);
}else{
int fd;
umask(0000);
fd = open(argv[1], O_RDWR|O_CREAT, 0666);
if(fd < -1){
printf("error\n");
exit(1);
}else{
printf("success=%d\n", fd);
close(fd);
printf("closed\n");
}
}
return 0;
}
读文件(写文件的过程和读文件相似)
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h> int main(int argc, char *argv[]){
//open file
if(argc<2){
printf("please input filename\n");
exit(1);
}else{
int fd;
umask(0000);
fd = open(argv[1], O_RDWR|O_CREAT, 0666);
if(fd < -1){
printf("error\n");
exit(1);
}else{
printf("success=%d\n", fd);
char buf[1024];
memset(buf, 0, 1024);
int returnum = read(fd, buf, 1024);
if(returnum != -1){
printf("buf=%s\n", buf);
}else{
printf("read error\n");
exit(1);
}
close(fd);
printf("closed\n");
}
}
return 0;
}
Android系统开发(6)——Linux底层输入输出的更多相关文章
- 《Android系统开发》笔记
<Android系统开发>笔记1:Android系统概述 Android四层架构: 1. Linux Kernel&driver层 a.依赖于Linux 2.6内核,包含安全性.内 ...
- Android系统开发--灯光系统之电池灯的流程分析
Android系统开发--Android灯光系统之电池灯的流程分析 前期系统准备 运行初始化,创建系统服务 创建电池服务,获得电池灯;创建监听者监听上报电池事件: mSystemServiceMana ...
- Android 系统开发做什么?
题外话 18 年我从 Android 应用开发转 Framework 层开发了,从此开启了 996 幸福生活,博客技术文更新基本停滞了,被工作占据了过多的精力,实在没时间像以前一样拟稿.写作,实践.反 ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- Android系统开发实务实训
实训项目 : Android系统开发实务实训 项目成品名称: 绝地坦克 ...
- Android系统开发 编译系统签名的APP
前言 一般情况下,我们使用的签名都是自己生成的Java签名来编译APP. 但是,如果需要开发一些特定设备的APP(对权限有更高的要求,需求一些系统基本的权限,比如让APP可以控制设备的休眠),那就需要 ...
- Android 系统开发学习杂记(转)
http://blog.csdn.net/shagoo/article/details/6709430 > 开发环境1.安装 Eclipse 和 android-sdk 并解压安装2.Eclip ...
- 【Android 系统开发】Android框架 与 源码结构
一. Android 框架 Android框架层级 : Android 自下 而 上 分为 4层; -- Linux内核层; -- 各种库 和 Android运行环境层; -- 应用框架层; -- 应 ...
- 浅谈Android系统移植、Linux设备驱动
一.Android系统架构 第一层:Linux内核 包括驱动程序,管理内存.进程.电源等资源的程序 第二层:C/C++代码库 包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:An ...
随机推荐
- Python hash、xml、configparser、sheve、shutil模块讲解 以及 面向对象初识
今日内容: 1.hash模块2.xml模块3.configparser模块4.sheve 模块5.shutil模块 知识点一:hash什么是hash: hash是一种算法,该算法接受传入的的内容,经过 ...
- [python学习篇][廖雪峰][1]高级特性--创建生成器 方法1 a = (x for x in range(1,3))
创建一个生成器的方法: for x in range(1,10000000) ,先生成一个列表[1........9999999] 如果我们只想要后面的几个元素,会发现浪费很多空间.所以,如果列表元素 ...
- GUI——AWT框架和容器,创建简单窗体
GUI概述:GUI(Graphical User Interface)—图形化用户界面.用户和程序之间可以通过GUI能方便友好地进行交互,在Java语言中,JFC(Java Foundation Cl ...
- 我们为什么要研究docker
一.docker整体概述 Docker会是改变世界的那只"箱子"吗? 是什么:世界领先的软件容器平台: 开发者使用docker可以解决"在我的机器上没问题" ...
- poj 1734 Sightseeing trip判断最短长度的环
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5590 Accepted: 2151 ...
- vim的复制粘贴(包括系统剪贴板)
1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只 ...
- 【POJ3352】Road Construction(边双联通分量)
题意:给一个无向图,问最少添加多少条边后能使整个图变成双连通分量. 思路:双连通分量缩点,缩点后给度为1的分量两两之间连边,要连(ans+1) div 2条 low[u]即为u所在的分量编号,flag ...
- ajax cache enable and ajax concurrency!
Today, forget to close ajax cache which leads to duplicate result from cache as to Jquery, this way, ...
- spring MVC学习之二
什么是Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MV ...
- LeetCode OJ——Text Justification
http://oj.leetcode.com/problems/text-justification/ 编译代码要看warnings!它提供了可能出问题的情况,比如类型转换上unsigned int ...