1.文件的创建,打开和关闭 open系统调用用来打开或创建一个文件。 #include<sys/types.h> #include<sys/stat.h> #include<fcnlt.h> open("filename[N]", int flag) open("filename[N]", int flag, mode_t mode) //文件打开成功返回文件描述符fd,打开失败返回-1 第二个参数(文件的打开方式)的宏如下: - O_RDONLY:只读打开; - O_WRONLY:只写打开; - O_RDWR:可读可写; - O_CREAT:若文件不存在则自动创建,当第二个参数里含有这个宏的时候才会使用第三个参数,也就是给创建的文件附上权限,和之前的chmod函数里面的mode是一样的。 - O_EXCL:如果O_CREAT被设置,此参数也被设置的话,它会检查要创建的文件是否存在,如果不存在的话则创建,存在的话则导致文件打开出错。 - O_TRUNC:如果 继续阅读 >>


董恒毅 16/07/25 20:26:19
系统编程: 系统编程是指程序员使用系统调用或c语言本身所携带的库函数来设计和编写具有某一特定功能的程序。 linux的文件系统 linux重要的一个概念就是linux下一切皆文件,从根目录开始,逐渐形成了目录树结构 : /:最上一级的目录,所有目录都被根目录所包含。 /bin:linux系统下存放的普通用户可以执行的目录,也是所有用户都可以执行的普通命令。 /boot:linux系统的内核及启动系统时所需要的文件,因为比较重要,所以一般放在独立的分区上。 /dev:设备文件的目录。 /etc:系统的配置文件,比如用户帐号和密码。 /home:家目录。 /lib:用户存放各种库文件。 /proc:虚拟文件系统,用作内存与磁盘的交换区。 /root:超级用户,拥有整个系统最高的权限。 /sbin:存放的是用于管理系统的命令。 /tmp:临时文件目录。 /usr:存放系统应用程序及其相关文件。 /var:系统中经常变化 继续阅读 >>


董恒毅 16/07/23 21:22:32
主函数的流程图: 1.将-后面的参数保存到一个数组之中。并记录-的个数。 2.判断参数的类型,含有l,a,R的参数正确,含有其他参数错误。 3.判断是否含有文件或目录名,如果没有则显示当前目录下的文件。 4.如果不是目标文件名或目录,解析下一个命令行参数。 5.如果目标或目录不存在,报错并退出程序。 关键函数的声明: 1.display_attribute void display_attribute(struct stat buf,char *name) //函数功能:打印文件名为name的文件的信息。 2.display_single void display_single(char *name) //函数功能:输出文件的文件名,若命令中没有-l选项,则输出的文件名要保证上下对齐。 3:void display void display(int flag,char *pathname) /*函数功能:根据命令行参数(存放在flag中)和完整的路径名(存放在pathname中)显示目标文件, 继续阅读 >>


董恒毅 16/07/20 20:53:52
转载自:http://blog.csdn.net/u012138828/article/details/38706811 sticky bit  粘住位 如果一个可执行文件的这一位被设置了,那么在该程序第一次执行结束时,其程序的正文部分(机器指令部分)的一个副本仍被保存在交换区。下次执行该程序时能较快的装入内存。原因:交换区占用连续磁盘空间,可视为连续文件,而一个程序的正文部分在交换区也是连续存放的,而在一般的unix文件系统中,文件的各数据块很可能是随机存放的。对于常用的应用程序,常常设置他们所在文件的粘住位。 现今的unix系统大多虚拟存储系统以及快速文件系统,所以不再需要这种技术。 现今系统扩展了粘住位的使用范围: 如果对一个目录设置了粘住位,只有对该目录具有写权限的用户在满足下列条件之一的情况下,才能删除或更名该目录下的文件: 拥有此文件 拥有此目录 是超级用户 目录/tmp和/var/spool/uucppublic设置了粘住位,任何用户都可以在这两个目录中创建文件。任用户对该两个目录的权限通常是r,w ,x但是用户不能 继续阅读 >>


董恒毅 16/07/19 10:57:09
#include<stdio.h> #include<stdlib.h> typedef struct node{ int number; struct node *next; }Node; int main() { Node *phead1,*p1,*q1; int i,n; phead1=(Node *)malloc(sizeof(Node)); if(phead1==NULL) exit(1); phead1->next=NULL; p1=phead1; scanf("%d",&n); for(i=0;i<n;i++) { q1=(Node *)malloc(sizeof(Node)); if(q1==NULL) exit(1); scanf("%d",&q1->num 继续阅读 >>


董恒毅 16/06/09 21:37:16