Android培训班(10)
#022
#023 /* clear the umask */
#024 umask(0);
在上面这段代码里,调用函数umask来设置屏蔽位为0值。这样的意思是什么呢?是告诉系统做了那些工作呢?要了解这个,就得深入查看一下linux函数大全了,因为它的作用就一目了然了,它的解释如下:
linux中的 umask 函数主要用于:在创建新文件或目录时 屏蔽掉新文件或目录不应有的访问允许权限。文件的访问允许权限共有9种,分别是:r w x r w x r w x(它们分别代表:用户读 用户写 用户执行 组读 组写 组执行 其它读 其它写 其它执行)。
其实这个函数的作用,就是设置允许当前进程创建文件或者目录最大可操作的权限,比如这里设置为0,它的意思就是0取反再创建文件时权限相与,也就是:(~0) & mode 等于八进制的值0777 & mode了,这样就是给后面的代码调用函数mkdir给出最大的权限,避免了创建目录或文件的权限不确定性,指定明确的标志,可谓是开发人员对代码健壮性深刻的反映,高度明确性。
#025
#026 /* Get the basic filesystem setup we need put
#027 * together in the initramdisk on / and then we'll
#028 * let the rc file figure out the rest.
#029 */
#030 mkdir("/dev", 0755);
#031 mkdir("/proc", 0755);
#032 mkdir("/sys", 0755);
在上面这段代码里,主要就是在当前内存模拟磁盘里建立一个基本的文件系统,以便后面加载rc文件来做其它事情。其中就是创建设备目录dev,进程文件系统目录proc,系统目录sys。
/dev是devfs(设备文件系统)或者udev的挂在点所在。在使用devfs的内核里如果没有/dev,根本见不到Shell启动的信息,因为内核找不到/dev/console;在使用udev的系统里,也事先需要在/dev下建立console和null这两个节点。关于devfs和udev的区别,网上很多文章说。当然如果你的内核已经不支持devfs了(2.6.12以后),可以使用纯纯的静态节点。也就是用mknod人工生成。
/proc是用来挂载存放系统信息虚拟文件系统——“proc文件系统”,“proc文件系统”在内核里面可以选。如果没有“proc文件系统”,很多Shell自己的命令就没有办法运行,比如ifconfig。“proc文件系统”不像devfs可以自动挂载,它需要使用初始化脚本挂载。另外,udev也需要“proc文件系统”的支持。
/sys用于挂载“sysfs文件系统”,“sysfs文件系统”在内核里面可以选。
相关文章
- Android学习之Toast遇到的问题(Toast弹窗不显示,多次点击控件且执行一次弹窗)
- android 置灰不可点击,Android Studio 运行按钮灰色的完美解决方法
- android+制作开机动画,Android 开机动画制作详解
- android 读取本地数据库db文件(Android sqlite)
- android autosize原理,Android屏幕适配头条:autosize的原理
- Android滑动解锁功能实现,Android_滑动解锁
- delphixe5 android,Delphi XE5 Android手机端转换Ansi字符串
- android app 退出功能,Android 完美退出 App (Exit)
- android swiperefreshlayout 自定义,SwipeRefreshLayout 的使用详解
- android 模拟器 haxm,Android模拟器不使用HAXM
- android sdk manager安装,Android SDK Manager安装过程
- Android SDK常用命令
- android 验证码短信验证码,Android短信验证码倒计时验证的2种常用方式
- android app反编译_安卓反编译教程
- Android angle_android 界面悬停
- Android | Handler.runWithScissors 解析
- android 复制控件,Android长按复制文本功能[通俗易懂]
- android进程间通信的方式_Android进程注入
- Android 图表开发开源库MPAndroidChart
- 【Android 应用开发】BluetoothClass详解
- 【Android 进程保活】应用进程拉活 ( 双进程守护保活 )
- 【错误记录】Android Studio 编译报错 ( Could not find com.android.tools.build:gradle:4.2.1. )
- 【ijkplayer】编译 Android 版本的 ijkplayer ② ( 切换到 k0.8.8 分支 | 执行 init-android.sh 脚本进行初始化操作 )
- 【Android Gradle 插件】LintOptions 配置 ④ ( Lint 问题 ID | fatal 方法配置 | ignore 方法配置 | warning 方法配置 )
- 【Android Gradle 插件】Gradle 依赖管理 ④ ( Android Gradle 插件中注册的依赖分组 | implementation | api | compileOnly )
- 【Android Gradle 插件】Gradle 构建机制 ⑤ ( 在 Android Studio 中查看 Android Gradle 插件源码 )
- Android开发 10个常用工具类详解手机开发
- [android] activity横竖屏切换的生命周期详解手机开发
- 快速掌握Android NDK 开发Linux环境配置(linuxndk配置)
- Android两大新漏洞曝光,逾10亿部设备面临被黑风险
- Windows 10 可能会在明年支持运行 Android 应用
- android自定义Android菜单背景的代码
- Android中gravity与layout_gravity的使用区别分析
- Android开发笔记之:在ImageView上绘制圆环的实现方法