随笔分类 - Linux
Linux 编程,普通操作知识
摘要:我们知道,多线程可以用多线程互斥量pthread_mutex_t实现线程之间上锁,那么多进程之间如何共享锁呢? 1. 文件锁实现多进程锁 由于文件锁是存放到位于内存的系统文件表中, 所有进程/线程可通过系统访问。如果不同进程使用同一文件锁(写锁/排他锁),当取得文件锁时,进程可继续执行;如果没有取得
阅读全文
摘要:今天用man命令查看pthread_mutex_init文档,发现没有该条目,而pthread_create却有。 我用的系统是ubuntu14x64,内核是4.2.0-27-generic版本 $ uname -a Linux ubuntu 4.2.0-27-generic #32~14.04.1
阅读全文
摘要:1. 问题描述 1)假如有一个IPv4地址字符串(点分十进制),如何转化为socket编程所需的sockaddr地址结构信息? 2)假如通过getaddrinfo等方式,已经取得了sockaddr地址结构信息,如何转化为字符串形式?(点分十进制 for IPv4, 冒号十六进制 for IPv6)
阅读全文
摘要:参考: linux MD5 Linux 自带md5sum命令, 可用于计算和检查md5 1. 利用md5sum生成md5值 $ echo -n '123456' | md5sum # -n 命令阻止自动换行 2. 制作成脚本 文件md5 #!/bin/bash echo -n $1 | md5sum
阅读全文
摘要:1. 服务器模型存在的问题 典型Unix系统可能存在许多服务器, 都只是等待客户请求的到达, 如FTP, Telnet, Rlogin, TFTP等. 4.3BSD之前, 这些服务都有一个进程与之关联. 这些进程在系统自举阶段(bootstrap), 从/etc/rc文件中启动, 且每个进程执行几乎
阅读全文
摘要:1. syslogd守护进程 我们知道, 守护进程(daemon)是 在后台运行且不与任何控制终端关联的进程. 参见: Linux 系统编程学习笔记 - 终端、作业控制与守护进程 守护进程章节. 那么如何得知守护进程的状态, 和某些事情发生呢?守护进程如何输出消息, 或者告知管理员? 可以调用sys
阅读全文
摘要:11.1 概述 用IP地址数值表示的主机, 端口标识服务器, 不容易记住, 而用名字表示比较容易记住. 另外, 数值地址可以变动, 而名字保持不变, 而且手工键入IP地址也很容易出错. 这就引入了域名系统 - 名字与地址间的转换. 名字和数值地址间进行转换的函数, 也是本章主要内容: gethost
阅读全文
摘要: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: 又简称时钟时间,从进程开始运行到结束,系统时钟走过的时间(时钟数),包含了进程阻塞、等待的时间。
阅读全文