Chinaunix首页 | 论坛 | 博客
  • 博客访问: 165563
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 675
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-26 00:58
文章分类
文章存档

2014年(2)

2013年(41)

我的朋友

分类: C/C++

2013-08-23 20:13:10

第一个问题:

linux下时间的表示

struct timeval 包括秒和微秒

struct tm 我们可通过tm结构来获得日期和时间 包括时区,年月日是时分秒

time_t 通常是long,保存秒数


第二个问题:

符号链接的死循环,cpcat符号链接的区别


ln -s . ll

mkdir ff

mv ll ./ff/


循环出无限个ll


最后经过多次尝试,发现几个问题


ls -s . ./123/t


ls -s ~/桌面 ./123/f


ls -s . ./123/4/5/6/m


ls -s .. ./1/2/3/4/5/6/n


结果不同


f指向的是~/桌面

t指向的./123

m指向的是6

n指向的是5


得到这样一个结论,使用.作为源地址,则指向的是父目录 .则是祖父目录


这样以来上面的问题就可以解决了

ll指向的是父目录,那么当ll移动到ff后指向的就是ffff目录下只有一个ll,所以只能看到ll的无限循环。


administrator@ubuntu:~/桌面$ ln -s .. 22/33/44/tes


假设上面是执行命令的情况.当建立符号链接的时候,用tes指向的数据块保存源文件(目录的inode信息),这里保存的是22/33,说明此时程序的工作目录在22/33/44中,那么就是在ln的时候,首先是切换目录到目的目录下,然后执行。符号链接指向的目录必须存在,不然第一步切目录就失败了。



在这个过程中了解到了mvcp的一些问题。

mv在同一个分区中(也就是使用同一个inode表),那么是在对应目录下添加目录项,然后把心的目录项指向inodeunlink旧的文件

如果不是同一个分区,分别执行cprm两条指令。


假设一个进程输出文件到A,这时候执行mv A B

在同一个分区中的时候,进程输出到B,因为mv执行unlink的时候连接数-1,即使此时为0,在进程退出之前,也不会删除inode,而这时候,B连接到了该inode,所以相当于写到了B。在进程开来,A就是B。没有分别。


如果是不同的分区,会把cp时候inode的内容复制,如果cp完了,进程仍在输出,这部分输出就不会出现在B中。



是如果由于意外断电或者其他原因的话,有可能会发生一些故障。如 可能一个inode结点在系统中已经被创建,但是其没有被正常使用,或者可能块号超出了范围。这些故障会给操作系统留下安全隐患。为此当出现意外关机或者 其他意外事件时,最好系统工程师能够利用fsck系统命令来修复inode结点中的错误。



在进行分区时,每个分区就是一个文件系统,而每个文件系统开始位置的那个块就称为超级块。超级块的作用是存储文件系统的大小、空的和填满的块,以及它们各 自的总数和其他诸如此类的信息。这也就是说,要使用这一个分区来进行数据访问时,第一个要经过的就是超级块,所以超级块坏了,这个磁盘也就回天乏术了。


http://blog.csdn.net/ilsas/article/details/5627348

阅读(1226) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~