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窗口中执行如下命令可以看到:

......

TLPI-Chapter 30 线程:线程同步

互斥量/*************************************************************************\

* Copyright (C) Michael Kerrisk, 2017. *

* *

* This program is free software. You may use, modify, and redistribut......

TLPI-Chapter 26 监控子进程

/*************************************************************************\

* Copyright (C) Michael Kerrisk, 2017. *

* *

* This program is free software. You may use, modify, and redistribute i......

TLPI-Chapter 25 进程的终止

#define _BSD_SOURCE /* Get on_exit() declaration from <stdlib.h> */

#include <stdlib.h>

#include "tlpi_hdr.h"

static void

atexitFunc1(void)

{

printf("atexit function 1 called\n");

}

static void

atexitFunc2(void)

{

printf("atexit function 2 called\n");

......

TLPI-Chapter 24 进程的创建

/*************************************************************************\

* Copyright (C) Michael Kerrisk, 2017. *

* *

* This program is free software. You may use, modify, and redistribute i......

TLPI-Chapter 29线程介绍

#include <pthread.h>

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

void printids(const char *s)

{

pid_t pid;

pthread_t tid;

/*getpid获取当前进程的ID*/

pid = getpid();

/*pthread_self获取自己的线程ID*/

tid = pthread_self();

printf("%s pid = %lu tid = %lu\n", s, (un......

TLPI-Chapter 20 信号

基本概念

信号是事件发生时对进程的通知机制。有时也称为软件中断,信号与硬件中断相似之处在于打断了程序执行的正常流程,大多数情况下,无法预测信号到达的精确时间。

一个具有合适权限的进程能够向另一进程发送信号,信号的这一用法可作为一种同步技术,甚至是进程通信IPC的原始形式。进程也可以向自身发送信号。然而发往进程的诸多信号,通常都是源于内核。

引发内核为进程产生信号的各类事件如下:

硬件发生异常:硬件异常的例子包括执行一条异常的机器语言指令,如被0除,或者引用了无法访问的内存区域。

用户键入能够产生信号的中断特殊字符:包括中断字符(Control-C)

发生了软件事件:例如......

TLPI-Chapter 13文件I/O缓冲

函数:void *memalign(size_t alignment, size_t size);

The obsolete function memalign() allocates size bytes and returns a pointer to the allocated memory. The memory address will be a multiple of alignment, which must be a power of two.

memalign 分配 size 字节的空间,返回指向该空间的指针,空间的地址是 alignment 的倍数,alig......

TLPI-Chapter 12系统和进程信息

“The /proc file system exposes a range of kernel information to application programs. Each /proc/PID subdirectory contains files and subdirectories that provide information about the process whose ID matches PID. Various other files and directories under /proc expose system-wide information that pro......

TLPI-Chapter 11系统限制和选项

关于系统限制C语言标准和SUSv3提供了两种方法:

1.在编译程序时能够获得一些限制和选项。

2.一些限制在程序运行时可能会发生变化。对此SUSv3定义了3个函数sysconf() pathconf()和fpathconf(),供应用程序调用以检查系统实现的限制和选项。

SUSv3将其规定的限制归为三类:

运行时恒定值 路径名变量值 运行时可增加值

在shell中,可以使用getconf命令获取特定UNIX系统中已然实现的限制和选项。例:

getconf ARG_MAX

getconf NAME_MAX /boot

在运行时获取系统限制

#include <un......