apue笔记之文件系统

文件系统
做一个类ls的实现:如myls

补充内容:想创建名为 -a 的文件:

touch  -a //报错

解决方法:

1:touch ./-a
2: touch -- -a  
//--告诉命令选项结束。

一、目录和文件
1、获取文件属性:

  • stat()
  • fstat()
  • lstat()

2、文件访问权限
st_mode是一个16位的位图

3、umask
作用:防止产生权限过松的文件

4、文件权限的更改/管理

  • chomd()
  • fchmod()

5、粘住位
t位(/tmp)

6、文件系统:FAT , UFS
文件系统:文件或数据的存储和管理

7、硬链接,符号链接

  • link()
  • unlink()
  • remove()
  • rename()

8、utime

9、目录的创建和销毁

  • mkdir()
  • rmdir()

10、更改当前工作路径

  • chdir()
  • fchdir()
  • getcwd()

11、分析目录/读取目录内容

  • glob()
  • /*************************************/
  • opendir()
  • closedir()
  • readdir(3)
  • rewinddir()
  • seekdir()
  • telldir

二、系统数据文件信息

  1. /etc/passwd
  2. /etc/group
  3. /etc/shadow
  4. 时间戳

三、进程环境
1、main函数

int main(int argc , char **argv)

2、进程终止
正常终止
从main函数返回
调用exit
调用_exit或者_Exit

	//正确区分exit与_exit,看如下例子
	int func()
	{
		return 0/1/2
	}
	int main()
	{
		int f;
		f = func();
		..........//做一系列事情
		switch(f)
		{
			case 0:
			case 1:
			case 2:
				default:
					_exit();//这里要调用_exit。因为执行到这里说明程序出问题,应该立即退出,而不是调用exit完成io清理等工作再退出,以免错误扩散。
		}
	}

最后一个线程从其启动历程返回
最后一个线程调用pthread_exit

异常终止
调用abort
接到一个信号并终止
最后一个线程对其取消请求做出响应

3、命令行参数的分析

  • getopt()
  • getopt_long()

4、环境变量

extern char **environ;
  • getenv()
  • setenv()
  • putenv()//参数没有const修饰,一般不用这个函数

5、c程序的空间布局
pmap(1)

6、库

  • 动态库
  • 静态库
  • 手工装载库
    dlopen()
    dlclose()
    dlerror()
    dlsym()
    //结合手册上的例子学习。提示:观看example时候关注void* 赋值给函数指针的问题

7、函数跳转
//场景:在一个深度为10000的树中查找一个结点。通常:递归查找,然后逐层返回。思考:查找过程并没有改变数据结构,当找到结点的时候是否可以直接跳出,而不需要逐层返回。类似与goto的功能,但goto不安全(不能跨函数跳转),所以引出如下两个函数。

  • setjmp()
  • longjmp()

8、资源的获取及控制

  • getrlimit()
  • setrlimit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值