系统调用跟我学

系统调用跟我学

最近浏览到一篇不错的文章,略带有科普性质,原文链接:

系统调用跟我学一

系统调用跟我学二

系统调用跟我学三

系统调用跟我学四

coredump

最近在定位一个非必现的问题时存在一个认识错误,在linux中开启coredump的脚本如下:

#!/bin/bash

### Filename: coredumpshell.sh

### Description: enable coredump and format the name of core file on centos system

# enable coredump whith unlimited ......

Linux内核模块

cat /proc/modules

第一列: 模块的名字

第二列: 模块的内存大小,单位是bytes

第三列: 被load的次数,0以为着没有被load过

第四列: 是否依赖第三方moudle,列出这些module,不依赖第三方moudle使用-代替

第五列: 模块的状态,有Live, Loading, Unloading三种状态

第六列: 模块当前的内核内存偏移位置。这些信息,debug的时候会非常有用。例如一些诊断工具 oprofile。

[root@centos7-10 ~]# cat /proc/modules

xt_CHECKSUM 12549 1 - Live ......

Linux网络安全技术与实现

本文记录Linux网络技术与实现读书笔记,这是一本已经停产了的书,在豆瓣上评分颇高,此书为第二版,第一版书名为-更安全的Linux网络。笔记记录的形式不会采取面面俱到的方式,精选一些比较重要的内容,如果你没有接触过这方面的内容,阅读本文可能会有强烈的不适感。

TCP UDP及Socket的关系端口的分类

公认的端口:0-1023

注册的端口:1024-49151

动态端口:49152-65535

端口的作用

假设我们在服务器端主机运行了Web SSH及DNS三项服务。在TCP/IP的网络规范中,当一个网络应用运行起来时,都会占用一个端口,如服务器端的Web服务器启动时,即会占用......

The Linux Programming Interface

本文复习The Linux Programming Interface一书中,一些知识点的总结,源代码存在github中,在源代码中添加部分注释,用于学习与总结。

确定glibc版本

使用如下命令:

[root@centos7-10 files]# ldd /usr/bin/ls | grep libc

libcap.so.2 => /lib64/libcap.so.2 (0x00007f7d5a0c1000)

libc.so.6 => /lib64/libc.so.6 (0x00007f7d59aeb000)

然后在shell窗口中执行如下命令可以看到:

......

[LeetCode C++实现]938. Range Sum of BST

Range Sum of BST

常规解法,递归遍历二叉搜索树的每个元素,然后将符合条件的元素相加。

/**

* Definition for a binary tree node.

* struct TreeNode {

* int val;

* TreeNode *left;

* TreeNode *right;

* TreeNode() : val(0), left(nullptr), right(nullptr) {}

* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}......

网络序与主机序

用一个例子演示htons的用法,用于编译的centos虚拟机为小端模式,因此下面的程序输出为

10 00

4096

与htons函数类似的几个函数及对应的作用如下:

uint32_t htonl(uint32_t hostlong);

uint16_t htons(uint16_t hostshort);

uint32_t ntohl(uint32_t netlong);

uint16_t ntohs(uint16_t netshort);

Description

The htonl() function converts the unsigned integer hostlon......

C语言中的隐式转换

为了定义转换规则,C99允许每个整数类型具有"整数转换等级"。下面按从最高级到最低级的顺序排列。

(1)long long int、usigned long long int

(2)long int、unsigned long int

(3) int 、unsigned int

(4) short int 、unsigned short int

(5) char、signed char、unsigned char

(6)_Bool

比较转换规则如下:

如果两个操作数类型相同,过程结束,否则依次尝试下面的规则:

(1):如果两个操作数都是有符号型或者都......

关于溢出的一个真实bug

来源于项目中一个真实的bug,最近项目中要适配32位linux系统时发现一段检测磁盘剩余空间的程序,低于一定空间的话退出安装程序安装失败.

代码简化如下:

参考如下代码:

#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <sys/vfs.h>

#include <errno.h>

#include <stdint.h>

#include <limits.h>

int main()

{

struct statfs d......

linux Command Line Cookbook

在gitbook上看到一本不错的书,适合在碎片时间比如地铁上阅读,而且是英文版,格调比较高。

Command Line Cookbook

书中首先讲的是重定向相关的内容,书中讲了一个例子,比如执行两条命令,在第一条命令执行失败时才执行第二条命令,可以用如下方法:

ls file &> /dev/null || echo "File not exist"

假如当前目录下不存在file这个文件,才会打印 File not exist,而&>file是一种特殊的用法,也可以写成>&file,二者的意思完全相同,都等价于

>file ......

epoll实例

epoll的示例网上很多,个人认为这个例子最能反映epoll的用法,最近在看libevent的源码,按照目前的工作繁忙情况也只有周日一天有时间看看,有点想念以前时间比较多,可以写一些学习笔记。

计划后续写一些livevent源码学习笔记。io多路复用可以参考我的另一篇文章io多路复用

getaddrinfo可以参考man手册的例子:getaddrinfo

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <errno.h>

#include <sy......