- 浏览: 263305 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (303)
- c (31)
- c++ (16)
- java (18)
- c# (1)
- python (3)
- java web (6)
- oracle (7)
- sqlserver (2)
- mysql (2)
- android (24)
- android系统 (15)
- android多媒体部分 (15)
- android游戏 (12)
- linux (26)
- javaScript (1)
- ajax (1)
- node JS (2)
- html (5)
- apache (3)
- jboss (1)
- weblogic (0)
- 通信协议 (10)
- 云计算 (1)
- 分布式 (5)
- ejb (1)
- webservice (5)
- 设计模式 (16)
- JNI (6)
- swing (13)
- 版本控制 (1)
- UML (1)
- xml (4)
- spring (5)
- hibernate (5)
- struts1 (3)
- struts2 (4)
- ibatis (0)
- tomcat (2)
- 心得体会 (1)
- css (1)
- 嵌入式 (41)
- arm体系结构 (10)
文件系统
ext2文件系统
分区的格式化工具mkfs
文件系统的总体存储布局
boot block(1kb)
block group 0
super block (超级块):描述整个分区的文件系统信息
GDT(块组描述表group descriptor table):由块组描述符组成
block bitmap(块位图) 用来描述整个块组中哪些块已用哪些块空闲
inode bitmap(inode 位图):本身占一个块,每个bit表示一个inode可用
inode table(inode 表):文件的描述信息存放在inode中,每个文件都有一个
node,一个块组的所有inode组成inode表
一个块组有多少个8kb就分配多少个inode
data blocks(数据块):存放文件的数据
block group 1
block group n
文件系统中存储的最小单位是块(block)
块的大小在格式化时确定,如mke2fs 的-b参数设定的块的大小
yuezhenhua@ubuntu:/home$ ls -l
总用量 12
drwxrwxrwx 4 root root 4096 2012-03-06 17:04 online
drwxrwxrwx 2 root root 4096 2012-02-02 16:06 share
drwxr-xr-x 33 yuezhenhua yuezhenhua 4096 2012-12-10 20:29 yuezheULL
目录的大小都是4096的整倍,因为分区的块大小是4096,
ls -l /dev/
/*xconsole 文件的类型是p 是一个FIFO文件,不在磁盘上保存数据,*/
crw------- 1 root root 0 2012-12-12 20:05 console
/*zero的文件类型是c,表示字符设备文件,代表内核中的一个设备驱动程序,没有数据块
1 主设备号
5 次设备号
*/
crw-rw-rw- 1 root root 1, 5 2012-12-12 20:04 zero
创建符号链接文件
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ touch hello
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ ln -s ./hello halo
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ ls -l
/*符号链接文件halo指向hello,字节数是7,是"./hello"这7个字符*/
wxrwxrwx 1 yuezhenhua yuezhenhua 7 2012-12-12 20:22 halo -> ./hello
-rw-rw-r-- 1 yuezhenhua yuezhenhua 6 2012-12-12 20:21 hello
创建硬链接
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ ln ./hello hello2
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ ls -l
/*第二栏的数字原本是1,现在变2,ls -l第二栏的数字是硬链接数,
表示一个文件在文件系统中有几个名字,可以保存在不同目录的数据块中,
也保存在inode中
*/
-rw-rw-r-- 2 yuezhenhua yuezhenhua 6 2012-12-12 20:21 hello
-rw-rw-r-- 2 yuezhenhua yuezhenhua 6 2012-12-12 20:21 hello2
目录的硬链接数
/*创建目录a*/
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ mkdir a
/*创建子目录b*/
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ mkdir a/b
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ ls -ld a
/*显示结果 */
drwxrwxr-x 3 yuezhenhua yuezhenhua 4096 2012-12-12 20:33 a
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ ls -la a
/*显示结果 目录a的硬链接数是3*/
总用量 12
drwxrwxr-x 3 yuezhenhua yuezhenhua 4096 2012-12-12 20:33 .
drwxrwxr-x 3 yuezhenhua yuezhenhua 4096 2012-12-12 20:33 ..
drwxrwxr-x 2 yuezhenhua yuezhenhua 4096 2012-12-12 20: b
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ ls -la a/b
/*显示结果 b目录的硬链接数是2*/
总用量 8
drwxrwxr-x 2 yuezhenhua yuezhenhua 4096 2012-12-12 20:33 .
drwxrwxr-x 3 yuezhenhua yuezhenhua 4096 2012-12-12 20:3 ..
示例代码:
1 创建一个1MB的文件并清零
/*dd命令把一个文件的一部分拷贝成另一个文件
if 表示输入文件
of 表示输出文件
count 表示拷贝多少次
bs 表示每次拷贝多少字节
*/
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ dd if=/dev/zero of=fs count=256 bs=4k
记录了256+0 的读入
记录了256+0 的写出
1048576字节(1.0 MB)已复制,0.00396396 秒,265 M 秒
2 对fs进行格式化(把这个文件的数据块合起来看成一个1MB在磁盘分区,在这个分区上再划
分块组)
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ mke2fs fs
mke2fs 1.41.14 (22-Dec-2010)
fs is not a block special device.
无论如何也要继续? (y,n) y
文件系统标签=
操作系统:Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128 inodes, 1024 blocks
51 blocks (4.98%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=1048576
1 block group
8192 blocks per group, 8192 fragments per group
128 inodes per group
正在写入inode表: 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
查看个块的块组和描述信息
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ dumpe2fs fs
dumpe2fs 1.41.14 (22-Dec-2010)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: 08c37487-bd06-4258-bd25-d8a323914575
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Filesystem flags: signed_directory_hash
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 128
Block count: 1024
Reserved block count: 51
Free blocks: 986
Free inodes: 117
First block: 1
Block size: 1024 # 块大小
Fragment size: 1024
Reserved GDT blocks: 3
Blocks per group: 8192
Fragments per group: 8192
Inodes per group: 128
Inode blocks per group: 16
Filesystem created: Wed Dec 12 21:03:32 2012
Last mount time: n/a
Last write time: Wed Dec 12 21:03:32 2012
Mount count: 0
Maximum mount count: 34
Last checked: Wed Dec 12 21:03:32 2012
Check interval: 15552000 (6 months)
Next check after: Mon Jun 10 21:03:32 2013
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 128
Default directory hash: half_md4
Directory Hash Seed: 7fdbe0d3-0192-4f0f-b269-d7c083b305c8
#第0个块是启动块,所以group 0只占1023个块
Group 0: (Blocks 1-1023)
主 superblock at 1, Group descriptors at 2-2
保留的GDT块位于 3-5
#块位图占一个块
Block bitmap at 6 (+5), Inode bitmap at 7 (+6)
Inode表位于 8-23 (+7)
986 free blocks, 117 free inodes, 2 directories
可用块数: 38-1023
#每8kb分配一个inode
可用inode数: 12-128
常规文件制作而成的文件系统也可以mount到某个目录
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ sudo mount -o loop fs /mnt
[sudo] password for yuezhenhua:
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ cd /mnt/
yuezhenhua@ubuntu:/mnt$ ls
lost+found
yuezhenhua@ubuntu:/mnt$ ls -la
总用量 17
drwxr-xr-x 3 yuezhenhua yuezhenhua 1024 2012-12-12 21:03 .
drwxr-xr-x 25 root root 4096 2012-04-06 12:29 ..
drwx------ 2 root root 12288 2012-12-12 21:03 lost+found
文件系统在格式化之后在根目录下自动生成三个目录
.
..
lost+found 由e2fsck工具使用
.和..表示根目录本身
yuezhenhua@ubuntu:/$ sudo umount /mnt/
查看这个文件系统的所有字节
/*启动块*/
000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
/*超级块*/
000400 80 00 00 00 00 04 00 00 33 00 00 00 da 03 00 00
inode count=128 block count=1024 reserved block=51 free blocks=986
000410 75 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
000420 00 20 00 00 00 20 00 00 80 00 00 00 00 00 00 00
000430 2c 85 c8 50 01 00 22 00 53 ef 01 00 01 00 00 00
000440 a4 80 c8 50 00 4e ed 00 00 00 00 00 01 00 00 00
000450 00 00 00 00 0b 00 00 00 80 00 00 00 38 00 00 00
000460 02 00 00 00 01 00 00 00 08 c3 74 87 bd 06 42 58
000470 bd 25 d8 a3 23 91 45 75 00 00 00 00 00 00 00 00
000480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0004c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00
0004d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0004e0 00 00 00 00 00 00 00 00 00 00 00 00 7f db e0 d3
0004f0 01 92 4f 0f b2 69 d7 c0 83 b3 05 c8 01 00 00 00
000500 00 00 00 00 00 00 00 00 a4 80 c8 50 00 00 00 00
000510 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
000560 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000570 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
000800 06 00 00 00 07 00 00 00 08 00 00 00 da 03 75 00
000810 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
000820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
001800 ff ff ff ff 1f 00 00 00 00 00 00 00 00 00 00 00
001810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
001870 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80
001880 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
*
001c00 ff 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00
001c10 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
*
002000 00 00 00 00 00 00 00 00 a4 80 c8 50 a4 80 c8 50
002010 a4 80 c8 50 00 00 00 00 00 00 00 00 00 00 00 00
002020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
/*根目录的inode
st_mode是以八进制表示,包含文件类型、文件权限
*/
002080 ed 41 e8 03 00 04 00 00 ed 83 c8 50 a4 80 c8 50
st_mode=040755
002090 a4 80 c8 50 00 00 00 00 e8 03 03 00 02 00 00 00
0020a0 00 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00
0020b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
002300 80 81 00 00 00 30 04 04 a4 80 c8 50 a4 80 c8 50
002310 a4 80 c8 50 00 00 00 00 00 00 01 00 08 00 00 00
002320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
002350 00 00 00 00 00 00 00 00 00 00 00 00 25 00 00 00
002360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
002500 c0 41 00 00 00 30 00 00 a4 80 c8 50 a4 80 c8 50
002510 a4 80 c8 50 00 00 00 00 00 00 02 00 18 00 00 00
002520 00 00 00 00 00 00 00 00 19 00 00 00 1a 00 00 00
002530 1b 00 00 00 1c 00 00 00 1d 00 00 00 1e 00 00 00
002540 1f 00 00 00 20 00 00 00 21 00 00 00 22 00 00 00
002550 23 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00
002560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
/*根目录的数据块*/
006000 02 00 00 00 0c 00 01 02 2e 00 00 00 02 00 00 00
006010 0c 00 02 02 2e 2e 00 00 0b 00 00 00 e8 03 0a 02
006020 6c 6f 73 74 2b 66 6f 75 6e 64 00 00 00 00 00 00
006030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
006400 0b 00 00 00 0c 00 01 02 2e 00 00 00 02 00 00 00
006410 f4 03 02 02 2e 2e 00 00 00 00 00 00 00 00 00 00
006420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
006800 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
006810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
006c00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
006c10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
007000 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
007010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
007400 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
007410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
007800 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
007810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
007c00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
007c10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
008000 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
008010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
008400 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
008410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
008800 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
008810 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
008c00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
008c10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
009000 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00
009010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
009400 00 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00
009410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
100000
debugfs 可以对文件系统作各种操作,如查看信息、恢复数据、修正文件系统中的错误
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$ debugfs fs
debugfs 1.41.14 (22-Dec-2010)
debugfs: help
显示目录的inode信息
yuezhenhua@ubuntu:/opt/sdk/tc/mmap$stat /
Inode: 2 Type: directory Mode: 0755 Flags: 0x0
Generation: 0 Version: 0x00000000
User: 1000 Group: 1000 Size: 1024
File ACL: 0 Directory ACL: 0
Links: 3 Blockcount: 2
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x50c880a4 -- Wed Dec 12 21:03:32 2012
atime: 0x50c883ed -- Wed Dec 12 21:17:33 2012
mtime: 0x50c880a4 -- Wed Dec 12 21:03:32 2012
BLOCKS:
(0):24
TOTAL: 1
quit退出debugfs
数据块寻址
如果一个文件有多个数据块,这些数据块可能不是边续存放,需通过其inode中的
索引项blockss查找
文件和目录操作的系统函数
stat(2)读取文件的inode,把inode中和文件属性填入一个struct_stat结构体中返回
示例代码:
stat /opt/file
查找的顺序是
读出inode中的第二项(根目录的inode),找出根目录数据块的位置
从根目录数据块中找出文件名为opt的记录,从记录中读出它的inode号
读出opt目录的inode,找出它数据块的位置
从opt目录的数据块中找出文件名为file的记录,从记录中读出它的inode号
读出file文件的inode
fstat(2)
传入一个文件描述符,传出inode信息
lstat(2)
传入路径,传出inode信息(如果文件是个符号链接文件时,返回的是文件本身的inode)
access(2) 检查执行当前进程的用户是否有权限访问某个文件
传入文件路径和要执行的访问操作(读、写、执行),取出inode中的st_mode字段,
比较访问权限,0表示允许,-1表示不允许
chmod(2)\fchmod(2) 改变文件的访问权限,修改inode中的st_mode
两函数的区别类似于stat/fstat
chmod(1)命令
chown(2)\fchown(2)\lchown(2) 改变文件的所有者和组,修改inode中的user和group字段
chwn(1)命令
utime改变文件的访问时间和修改时间,修改inode中的atime和mtime字段
touch(1)命令
truncate(2)\ftruncate(2)把文件截断成某个长度,如果新的长度比原长度长,则补0
修改inode中的block索引项和块位图中相应的bit
link(2)创建硬链接,在目录的数据块中添加一条新记录
syslink(2)创建一个符号链接,创建一个新的inode,st_mode的文件类型是符号链接
ln(1) 命令
unlink(2)删除一个链接
符号链接 释放inode和数据块,清除inode位图和块位图中相应的位
硬链接于 清除一条文件名记录
unlink(1)\rm(1)命令
rename(2)改变文件名,修改目录数据块中的文件名记录
mv(1)命令
readlink(2) 读取一个符号链接所指向的目标路径,从符号链接的inode或数据块中读出
目标路径
mkdir(2) 创建一个目录
在父目录的数据块中添加一条记录,分配新的inode和数据块.
mkdir(1)命令
rmdir(2) 删除一个目录(目录必需为空)
释放inode和数据块,清除inode位图和块位图中相应的位,
清除父目录数据块中的记录,父目录的硬链接数减1
rmdir(1)命令
opendir(3)\readdir(3)\close(3)遍历目录数据块中的记录
opendir打开一个目录,返回一个DIR *,类似于file *的名柄
closedir 关闭这个句柄,把dir *指针传给readdir读取目录数据块中的记录
每次返回一个指向struts_dirent的指针
structs_dirent结构体的定义如下
struct dirent{
ino_t d_ino; /*incode number*/
off_t d_off; /*offset to the next dirent*/
unsigned short d_reclen; /*length of this record*/
unsigned char d_type; /*type of file*/
char d_name; /*filename*/
};
用递归打印目录下的所有子目录和文件
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#define MAX_PATH 1024
/*打印目录下的所有子目录和文件*/
void dirwalk(char *dir,void (*fcn)(char *)){
char name[MAX_PATH];
struct dirent *dp;
DIR *dfd;
if((dfd=opendir(dir))==NULL){
fprintf(stderr,"dirwalk: can't open %s\n",dir);
return;
}
while((dp=readdir(dfd))!=NULL){
if(strcmp(dp->d_name,".")==0||strcmp(dp->d_name,"..")==0){
continue;
}
if(strlen(dir)+strlen(dp->d_name)+2>sizeof(name)){
fprintf(stderr,"dirwalk:name %s %s too long\n",dir,dp-
>d_name);
}else{
sprintf(name,"%s%s",dir,dp->d_name);
(*fcn)(name);
}
}
closedir(dfd);
}
void fsize(char *name){
struct stat stbuf;
if(stat(name,&stbuf)==-1){
fprintf(stderr,"fsize: can't access %s\n",name);
return;
}
if((stbuf.st_mode & S_IFMT)==S_IFDIR){
dirwalk(name,fsize);
}
printf("%8ld %s\n",stbuf.st_size,name);
}
int main(int argc,char **argv){
if(argc==1){
fsize(".");
}else{
while(--argc>0){
fsize(*++argv);
}
}
return 0;
}
发表评论
-
进程控制学习笔记一
2013-01-28 21:10 636进程控制 进程的定义: 进程是一个程序的一次执行的过程,同时也 ... -
文件I/O编程学习笔记三(linux 时间编程)
2013-01-27 17:56 863linux 时间编程 时间类型 coordinated uni ... -
文件I/O编程学习笔记二(c语言库函数访问文件)
2013-01-27 17:29 836c语言库函数访问文件 库函数是独立于操作系统平台,可移植性强 ... -
文件I/O编程学习笔记一(基于linux系统的文件编程)
2013-01-26 19:55 825文件I/O编程 1 基于linux系统的文件编程 创建文件 ... -
基础编程学习笔记一(程序的编译与调试)
2013-01-25 19:40 1040程序的编译与调试 gcc (gnu c compiler) g ... -
基础编程学习笔记二(makefile工程管理)
2013-01-25 20:11 810makefile工程管理 makefile文件描述了整个工 ... -
嵌入式linux应用开发完全手册学习笔记三(windows、linux下工具使用)
2013-01-21 20:45 1384windows\linux环境下相关工具、命令的使用 wind ... -
嵌入式linux应用开发完全手册学习笔记一(嵌入式开发概述)
2013-01-14 20:01 935嵌入式经历了 单片机(SCM)single chip micr ... -
嵌入式linux应用开发完全手册学习笔记二(嵌入式linux开发环境搭建)
2013-01-16 20:55 3242嵌入式linux开发环境搭建 硬件环境构建 ... -
linux下安装无线网卡驱动
2013-01-10 22:17 12601下载并解压 Broadcom 驱动程序的压缩档 2 mkd ... -
shell编程学习笔记二
2013-01-03 18:26 736流程控制 退出状态 有四种退出状态 最后命令退出状态 ... -
shell编程学习笔记三
2013-01-03 21:03 750case 语句 语句格式 case "$vari ... -
linux常用命令
2012-12-31 10:18 678linux常用命令 安中文显示包(server目录) 1 ... -
samba服务器的安装配置
2012-12-31 11:57 775samba服务器 实现文件共享和打印服务共享,类似于wind ... -
nfs服务器安装配置
2012-12-31 12:29 807nfs服务器 netwrok file system 网络文件 ... -
tftp服务器安装与配置
2012-12-31 12:59 1338tftp服务器 trivial file transfer ... -
ssh服务配置
2012-12-31 13:07 836ssh 检查是否安装 [root@localhost Se ... -
linux 系统编程学习笔记二
2012-12-06 22:15 770lseek 文件在打开时读写位置是0,如果是以O_APP ... -
linux 系统编程学习笔记三
2012-12-10 20:54 826mmap 可以把磁盘文件的一部分直接映射到内存,这样文件中的 ... -
linux 系统编程学习笔记一
2012-12-05 21:29 798文件与i/o 汇编程序的he ...
相关推荐
GUN/LINUX系统编程学习笔记,分享快乐。
Linux系统编程是一门专注于Linux操作系统上应用程序和工具开发的学科。它包含了广泛的领域,如文件操作、进程管理、内存管理以及网络编程等。开发者在这一领域中,从基础的文件系统交互到复杂的网络通信和多线程编程...
Linux系统编程笔记涉及到的内容广泛,涵盖了从基础的出错处理到进程管理,从内存管理到进程间通信,以及守护进程设计等多个层面的知识。下面详细说明各个部分的知识点: 1. 常见出错处理 - abort函数用于异常终止...
Linux Shell编程学习笔记
Linux系统在科学计算、数据分析和机器学习等领域也有广泛应用。许多知名的科学计算软件都在Linux上开发和运行,Linux系统在各个领域都有广泛的应用,其强大的功能和灵活性使得它成为许多产品和服务的基础架构。
### Linux系统编程学习笔记 #### 一、IO **1.1 标准I/O (stdio)** - **fopen/fclose**: `fopen` 用于打开或创建一个文件,并返回一个指向该文件的 `FILE *` 类型的指针。`fclose` 用于关闭由 `FILE *` 指向的文件...
【Linux 系统编程与内核驱动开发笔记】 在深入探讨Linux系统编程和内核驱动开发之前,我们首先要理解Linux操作系统的基本概念。Linux是一种自由、开放源码的类Unix操作系统,广泛应用于服务器、桌面环境以及各种...
Linux是开源的操作系统,它的命令行界面,尤其是Shell编程...因此,无论你是技术小白还是希望进一步提升,这份“Linux零基础学习笔记 Shell编程-菜鸟入门”都会是你宝贵的资源。祝你在学习的道路上越走越远,不断进步!
Linux系统在科学计算、数据分析和机器学习等领域也有广泛应用。许多知名的科学计算软件都在Linux上开发和运行,Linux系统在各个领域都有广泛的应用,其强大的功能和灵活性使得它成为许多产品和服务的基础架构。
根据提供的文件信息,我们可以推断出这是一份关于Linux编程学习笔记的PDF资料。下面将对这份资料可能涉及的关键知识点进行详细的阐述。 ### Linux编程基础知识 #### 1. Linux操作系统概述 - **定义与特点**:Linux...
总的来说,"Linux系统编程及网络编程笔记"会详细解析上述各个方面,包括理论知识、实际示例和最佳实践,旨在帮助学习者深入理解Linux环境下的系统编程和网络编程,为开发高效、安全的系统级应用程序和网络服务打下...
/* 主机的地址长度 对于IP4 是 4 字节 32 位*/ char **h_addr_list; /* 主机的 IP地址列表 */ } #define h_addr h_addr_list[0] /* 主机的第一个 IP地址*/ gethostbyname 可以将机器名(如 linux.yessun.com)...
Linux系统在科学计算、数据分析和机器学习等领域也有广泛应用。许多知名的科学计算软件都在Linux上开发和运行,Linux系统在各个领域都有广泛的应用,其强大的功能和灵活性使得它成为许多产品和服务的基础架构。
Linux操作系统是全球众多程序员...总之,Linux操作系统的学习笔记覆盖了从系统安装到文件管理,从用户权限到进程调度,从设备管理到网络控制等多个层面的知识点,是学习Linux操作系统和提升系统管理能力的重要资源。
Linux系统在科学计算、数据分析和机器学习等领域也有广泛应用。许多知名的科学计算软件都在Linux上开发和运行,Linux系统在各个领域都有广泛的应用,其强大的功能和灵活性使得它成为许多产品和服务的基础架构。
该项目以Linux内核为核心,围绕其构建了一个完整的操作系统,包括各种系统工具、库、应用程序和硬件支持。 以下是Linux项目的一些主要特点和资料介绍: 开放源代码:Linux项目的所有源代码都是公开的,并允许任何...
本文档主要记录了 Linux 操作系统的学习笔记,涵盖了 Basic 的编程、VI 编辑器的使用、GCC 编译器的应用、GDB 调试工具的使用等方面的知识点。 一、编程基础 * 了解 C 语言的基本语法,例如变量声明、数据类型、...
系统信息与系统资源-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板