摘要:
参考 廖雪峰官网Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 一、安装 1. 从官网下载安装包 官网: https://git-scm.com/ 对应github:ht 阅读全文
摘要:
1. 出错函数汇总 AUPE 输出至标准错误的出错函数, 分为以下几个: 函数名 何时调用 功能 err_ret 系统调用相关的非致命错误 打印消息并且返回 err_sys 系统调用相关的非致命错误 打印消息并且终止程序 err_cont 不与系统调用相关的非致命错误 错误码通过显式参数error传 阅读全文
摘要:
1. 输出 1.1 输出格式化字符串 1.1.1 printf 输出格式化字符串到标准输出设备stdout #include <stdio.h> int printf(const char *format, ...); 参数 format 格式化字符串以null终结符结尾 ... 对应format中 阅读全文
摘要:
1. 目标 Linux C编写一个简单的固定数目的线程池, 实现向线程池添加任务并执行的功能. 2. 固定数目线程池fixedthreadpool 类似于java的newFixedThreadPool, 线程池中的子线程数目固定, 在创建时由用户, 可以用一个线程队列来描述. 当用户需要用线程池执行 阅读全文
摘要:
1. UDP connect 我们经常说UDP是无连接的传输协议, 如果UDP调用connect呢? 会发生什么? UDP套接字调用connect函数, 跟TCP连接调用connect不一样: 没有三次握手过程. 而且, 内核只是检查是否存在立即可知的错误(e.g. 一个显然不可达的目的地, 由于非 阅读全文
摘要:
1. 套接字选项概述 有很多方法来获取和设置套接字的选项, 以影响套接字行为: getsockopt和setsocketopt; fcntl; ioctl; 2. getsockopt和setsockopt 2个函数仅用于套接字, 分别用于获取和设置套接字选项 #include <sys/types 阅读全文
摘要:
每个进程的实际实现都有一组资源限制, 可以用getrlimit, setrlimit获取或设置 1. getrlimit和setrlimit getrlimit和setrlimit, 能分别获取/设置当前进程的系统资源限制 #include <sys/time.h> #include <sys/re 阅读全文
摘要:
shutdown和close都可以用来关闭TCP连接, 那么它们有区别与联系呢? 下面来研究下这个问题: 1. close 关闭连接和套接字. 成功返回0; 失败为-1, errno被设置 #include <unistd.h> int close(int fd); close会把描述符(sockf 阅读全文
摘要:
1. 慢系统调用 UNP 5.9提到, 慢系统调用(slow system call)指不会立即返回的系统调用, 可能永远阻塞而无法返回. 诸如多数网络支持函数, 包括read/write, connect, accept等, 都属于这一类. 慢系统调用, 主要分为以下类别: 读写"慢"设备 包括p 阅读全文
摘要:
1. RST标志位 RST标志位位于TCP报文首部, 其置位时, 表示连线复位,首先断开连接,然后重建. RST置位的分节(TCP数据包), 常称为RST分节. RST不同于close (FIN分节), close用于关闭正常连接, 而RST用于复位异常连接. 参考 TCP报文格式 | CSDN T 阅读全文
摘要:
安装好git后, 如何配置连接至gitee ? 首先, 需要在官网注册一个gitee账号, 然后进行以下配置步骤: 1. 设置账号 $ git config --global user.name "your name" 2. 设置邮箱 $ git config --global user.email 阅读全文
摘要:
1. 出错处理errno 每个进程维护一个全局整型变量errno, 记录系统(调用)的最后一次错误代码. errno及其常量值定义位于<errno.h>. 以前, errno不是线程安全的, 其定义是: extern int errno; 现在, 为支持多线程环境, errno定义是: extern 阅读全文
摘要:
1. 进程运行时间的概念 如何度量进程的运行时间? 可以用times函数获取进程的墙上时钟时间,用户CPU时间,系统CPU时钟时间。 1.1 墙上时钟时间 墙上时钟时间 wall clock time: 又简称时钟时间,从进程开始运行到结束,系统时钟走过的时间(时钟数),包含了进程阻塞、等待的时间。 阅读全文
摘要:
阅读全文
摘要:
使用aio的时候, 出现编译问题: 对‘aio_read’未定义的引用( undefined reference to 'aio_read' ). 要如何解决 ? 确认已经include头文件 aio.h; 编译的时候, 链接librt库, 命令: $ gcc async_demo.c -lrt 选 阅读全文
摘要:
1.select和poll IO多路转换技术, select, poll的原理是: 通过将待监听文件描述符(fd)加入集合, 然后通过查询其调用返回值, 取得数据有动静的fd数量, 再轮询集合中每个fd, 如果有数据, 就直接读取; 如果没有数据, 就等待下一次查询. select和poll实现了异 阅读全文
摘要:
通过gethostname + getaddrinfo , 得到本机ip地址为127.0.1.1 , 而非127.0.0.1. 为何? 源代码 来源: Linux编程获取本机IP地址的几种方法 int main(int argc, const char **argv) { int ret; char 阅读全文
摘要:
文件截断, 指的是将文件内容分成两半, 只保留需要的文件长度的那部分. 通常, 将文件长度截断为0. 文件截断方式: 1. 使用系统调用open/fopen O_TRUNC截断 open截断文件, 会清空文件已有内容, 即保留长度为0. 指定O_TRUNC标识时, 文件必须可写方式(如O_RDWR, 阅读全文
摘要:
1. 守护进程创建步骤 守护进程是没有终端的进程, 运行在后台, 常在系统引导时启动. 那么如何创建守护进程呢? 参照APUE 13.3, 创建守护进程步骤: 调用umask设置进程创建文件的权限屏蔽字(umask), 便于守护进程创建文件 umask通常设为0, 如果调用库函数创建文件, 可设置为 阅读全文
摘要:
守护进程 没有控制终端, 运行在后台的特殊进程, 用于执行特定的系统任务, 这样的进程称为守护进程. 守护进程长期生存, 常在系统引导时装入启动. 一般的网络服务, 都是以守护进程形式存在提供服务. 用户层守护进程的父进程是init进程(pid = 1). 守护进程查看方式: 基于BSD的系统, 执 阅读全文