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 · 161 阅读 · 0 评论 -
Unix/Linux-05
回顾 文件操作 open read write close lseek 今天 文件控制fcntl 文件描述符的复制dup(内存中) 文件锁 文件的周边函数 目录操作(待定) 1. dup和dup2 dup和dup2 可以复制文件描述符,但不复制文件表。 dup 返回当前可用描述符的最小值。 dup2 可以 指定文件描述符的值,如果这个值正在使用,关闭正在使用的之后再完成复制。 dup3 注解: dup: 系统指定最小可用的描述值 dup2: 可自己指定文件描述符,如它被占用,强制关闭再使原创 2020-08-24 10:53:40 · 154 阅读 · 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 · 179 阅读 · 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 == env getenv/setenv/putenv/unsetenv/clearenv 3. 内存管理(偏理论原创 2020-08-24 10:50:06 · 242 阅读 · 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 · 245 阅读 · 0 评论 -
Unix/Linux-01
new和malloc的区别: new 一般用于C++, malloc一般用于C, 当然C++中也可以使用malloc,因为C++兼容C new 有类型, malloc无类型 void* new 会执行构造函数,然后再分配; malloc不会 new 运算符, malloc 函数 进程 ps kill -9 强制信号,不忽略 IPC Unix三大版本 System V Berkley Hybrid -linux 封装 继承 多态 POSIX GPL GCC的作用: 1 预处理 2 编译 3 汇编 4原创 2020-08-24 10:06:14 · 199 阅读 · 0 评论 -
有时不需要头文件包含也能编译过
用有些通用的函数调用不需要包含头文件也能编译通过(如printf等), 为什么不报找不到函数定义? 那是因为这些函数都在libc库中,而libc库不需要显式指定,默认就包含了libc的动态库。原创 2016-11-10 09:54:45 · 2568 阅读 · 0 评论 -
va_start和va_end简单使用
1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表 void foo(...); void foo(parm_list,...); 这种方式和我们以前认识的不大一样,但我们要记住这是C中一种传参的形式,属于变长传参 2.函数参数的传递原理 函数参数是以数据结构:栈的形式存取,从右至左入栈。 首原创 2016-12-26 17:35:16 · 414 阅读 · 0 评论