C
文章平均质量分 92
运妙心藏
C/Cpp/Java/C#/Lua/PHP/Android/Python 程序員 手游 前端 后台
展开
-
Unix/Linux-06
回顾文件的相关操作fcntl 函数 (复制文件描述符、取文件表的状态、文件锁)access 函数stat 函数今天文件的周边函数、内存mmap、目录的函数进程的创建(fork/vfork)umask 是 设置权限的屏蔽字,对 创建文件有效。chmod 是 对已经存在的文件 ,修改 权限。truncate/ftruncate 可以 指定文件的长度(可大可小)内存 映射 文件 mmap目录相关函数:rename - 重命名mkdir - 创建新目录rmdir - 删除目录, 只原创 2020-08-24 11:12:03 · 265 阅读 · 0 评论 -
Unix/Linux-05
回顾文件操作openreadwritecloselseek今天文件控制fcntl文件描述符的复制dup(内存中)文件锁文件的周边函数目录操作(待定)1. dup和dup2dup和dup2可以复制文件描述符,但不复制文件表。dup 返回当前可用描述符的最小值。dup2 可以 指定文件描述符的值,如果这个值正在使用,关闭正在使用的之后再完成复制。dup3注解:dup: 系统指定最小可用的描述值dup2: 可自己指定文件描述符,如它被占用,强制关闭再使原创 2020-08-24 10:53:40 · 162 阅读 · 0 评论 -
Unix/Linux-04
回顾内存管理1 Unix/Linux内存使用 虚拟内存地址空间 方式进行管理。程序员操作的都是 虚拟内存地址。2 Unix/Linux系统中,内存管理 最小单位 内存页,一个内存页 4096字节。3 C++用new/delete,底层调用 C语言的malloc/free,底层调用brk/sbrk,底层mmap/munmap。4 malloc分配内存时,一次分配33个内存页(虚拟内存地址映射物理内存),malloc 分配内存,底层需要额外的空间存储 分配信息。但不影响对内存使用和管理。原创 2020-08-24 10:52:13 · 189 阅读 · 0 评论 -
Unix/Linux-03
回顾1. 错误处理C程序员一般对错误有4种处理方式 (void、-1、指针+ -1、NULL)C官方 提供了errno记录错误的编号,用perror显示错误信息strerror(errno)printf("%m")2. 环境表int main(int argc, char** argv, char** env){}extern char** environ;environ == envgetenv/setenv/putenv/unsetenv/clearenv3. 内存管理(偏理论原创 2020-08-24 10:50:06 · 250 阅读 · 0 评论 -
Unix/Linux-02
回顾gcc 概述c语言的开发相关文件.c 源文件.o 目标文件.h 头文件.a 静态库.so 共享库文件环境变量PATH/CPATH/LD_LIBRARY_PATH/静态库和共享库动态调用函数(dl系列函数)dlopen 从硬盘打开共享库文件dlsym 从共享库文件中打开函数dlclose 关闭共享库文件dlerror 判定错误今天C语言的错误处理环境表(程序中如何拿到环境变量)Unix/Linux内存管理ldconfig/lib/usr/lib原创 2020-08-24 10:12:58 · 274 阅读 · 0 评论 -
Unix/Linux-01
new和malloc的区别:new 一般用于C++, malloc一般用于C, 当然C++中也可以使用malloc,因为C++兼容Cnew 有类型, malloc无类型 void*new 会执行构造函数,然后再分配; malloc不会new 运算符, malloc 函数进程pskill -9 强制信号,不忽略IPCUnix三大版本System VBerkleyHybrid -linux封装 继承 多态POSIXGPLGCC的作用:1 预处理 2 编译 3 汇编 4原创 2020-08-24 10:06:14 · 211 阅读 · 0 评论 -
有时不需要头文件包含也能编译过
用有些通用的函数调用不需要包含头文件也能编译通过(如printf等),为什么不报找不到函数定义?那是因为这些函数都在libc库中,而libc库不需要显式指定,默认就包含了libc的动态库。原创 2016-11-10 09:54:45 · 2623 阅读 · 0 评论 -
va_start和va_end简单使用
1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表 void foo(...); void foo(parm_list,...); 这种方式和我们以前认识的不大一样,但我们要记住这是C中一种传参的形式,属于变长传参2.函数参数的传递原理 函数参数是以数据结构:栈的形式存取,从右至左入栈。 首原创 2016-12-26 17:35:16 · 423 阅读 · 0 评论