LINUX应用程序开发随笔

0.常用命令:

  (1)perror:打印出错的原因,可自动关联全局变量errno  <stdio.h> 

  (2)strerror:打印errno对应的内容  <string.h>

       (3)malloc:  <stdlib.h>

  (4)ulimit:更改系统限制参数,例如:更改文件可以打开的最多数量  根据系统提示的 -啥字母 去更改 。  ulimit -a  可以查看所有系统限制

  (5)比较两个文件是否相同: diff file1 file2   :如果相同,则什么都不返回

  (6)du:显示指定的目录或文件所占用的磁盘空间

 

 

0-1.常用知识点:

  (1)void *赋给任何指针,或者任何指针赋给void *都是天经地义的。

  (2)栈、堆、静态区的区别:

    静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。

    栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

    堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。动态内存的生存期可以由我们决定,如果我们不释放内存,程  序将在最后才释放掉动态内存。 但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,否则,我们认为发生了内存泄漏现象。

  (3)谁打开谁关闭,谁创建谁销毁,是资源就有上限

  (4)文件权限自动生成规则:  0666 & ~umask   (其中umask的值,直接在终端下输入即可,umask的存在,就是为了防止产生权限过松的文件)

  (5)要养成使用任何函数一定要包含其头文件的习惯

  (6)VIM编辑器的Tab缩进配置方式如下:

    ①创建配置文件:vim ~/.vimrc

    ②set tabstop=4  set softtabstop=4  set shiftwidth=4  set expandtab  set autoindent

 

1.LINUX应用程序开发主要学习的知识点4个:I/O、文件系统、并发、IPC(Inter-Process Communication 进程间通讯); 参考书籍为<<UNIX环境高级编程>>,基础知识为3~16章。

   I/O:3、5、14章

   文件系统:4、6、7章

   并发:  信号:10章   多线程 10、11章

   IPC:    进程基础:8章   守护进程:13章   进程间通信:15、16章

 

2.I/O(input & output 是一切实现的基础)

   I/O分两种,一种是标准I/O(stdio) -->第五章  ,一种是系统调用I/O,也叫文件I/O(sysio)  --->第三章   优先使用标准I/O,可移植性好

 

3.标准I/O(stdio):  FILE类型贯穿始终

    文件打开、关闭:fopen fclose

    字符/字符串读写:fgetc fputc fgets fputs fread fwrite

    打印以及读取:printf scanf

    文件指针操作:fseek ftell rewind flash

 

4.fopen、fclose的讲解:

  (1)FILE指针,是存放在堆中的

  (2)fprintf用来打印很方便,输出路径输入stderr,可以直接打印在控制台上,

  (3)perror打印和strerror打印非常好用,详细见常用命令1、2

  (4)生成文件的权限规则详见常用知识点4

  (5)但凡碰到函数指针,就多思考一下指针的返回是堆还是栈还是静态区

 

5.fgetc、fputc的讲解:

  (1)getc在系统中被定义成宏来使用,fgetc在系统中被定义成函数来使用。其中宏不占用系统调用时间,只占用编译时间,函数则恰恰相反。

  (2)打开文件,就必须关闭文件。如果打开文件后,在后续的操作中发生异常,必须关闭文件,此处操作最好挂在钩子上。

  (3)用这两个函数和fopen、fclose这两个函数,可以实现cp函数的功能以及统计一个文件内有多少个有效字符的功能

 

6.fgets、fputs的讲解:

  (1)fgets正常结束的方式有2种:①读取到size-1个字符 ②读取到‘\n’,其中①,读取size-1结束,是因为最后有一个‘\0’

 

7.四种输出的讲解:

  (1)printf:输出到标准输出上

  (2)fprintf:输出到指定输出流上

  (3)sprintf:输出到字符串上

  (4)snprintf:输出到固定长度的字符串上(防止越界)

 

8.三种输入的讲解:

  (1)scanf:从标准输入设备上获取

  (2)fscanf:从指定流获取

  (3)sscanf:从字符串钟获取

 

9.原则操作:不可分割的最小单位;  其作用:解决竞争和冲突

 

10.命令行模式下,一个命令后跟参数时, --后跟长格式选项, -后跟短格式选项,既然短格式好用,长格式还存在的意义在于:如果某两个或多个命令短格式都一样,比如都是-a,那么只能使用长格式。

 

11.文件常用权限:  664   即:使用chmod 更改的权限

 

12.单链表最大的缺陷:单向回不去

 

13. ln 创建一个硬链接, 创建出来的新文件,inode号和原来一模一样,即使删除了源文件,链接文件依旧可以使用。其特点是:硬链接与目录项是同义词,并且建立硬链接有限制,不能给分区和目录建立

     ln -s  符号链接,类似于windows下的快捷方式,inode号和原来不一样。文件类型显示时,是L。其特点是:可以跨分区,可以给目录建立。

 

14. utime 可以更改文件最后读的时间和修改的时间

 

posted @ 2022-01-08 23:36  大器晚成316  阅读(164)  评论(0)    收藏  举报