
APUE
liuge
我们的征途是星辰大海
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
APUE——IPC_管道,消息队列
管道基础知识原创 2020-07-21 23:22:43 · 427 阅读 · 0 评论 -
APUE——文件与文件IO
简析文件系统与文件io原创 2020-07-15 15:45:11 · 318 阅读 · 0 评论 -
APUE——文件系统的VFS以及相关结构体简要分析
写了点关于linux文件系统相关的分析,比较基础原创 2020-06-05 17:49:14 · 450 阅读 · 1 评论 -
APUE——标准IO相关
写点标准IO的总结原创 2020-05-28 18:42:34 · 287 阅读 · 0 评论 -
APUE——pthread_cond_wait深度分析
写了点关于pthread_cond_wait和signal的心得原创 2020-05-25 13:22:18 · 1643 阅读 · 2 评论 -
APUE——信号基础以及信号的响应
1.信号基础1.1 信号函数#include <signal.h>void (*signal(int signo, void (*func)(int)))(int); 这是可靠写法void (* signal( int signo, void (*func)(int) ) )(int);函数名 :signal函数参数 :int signo, void (*func)(int)返回值类型:void (*)(int);信号的忽略: 信号忽略的核心是将mas原创 2020-05-21 16:28:22 · 429 阅读 · 1 评论 -
APUE——fork分析
1、fork现在P1用fork()函数为进程创建一个子进程P2,a. fork内核:复制P1的正文段,数据段,堆,栈这四个部分,注意是其内容相同。为这四个部分分配物理块,P2的:正文段->PI的正文段的物理块,其实就是不为P2分配正文段块,让P2的正文段指向P1的正文段块,数据段->P2自己的数据段块(为其分配对应的块),堆->P2自己的堆块,栈->P2自己的栈块。如下图所示:同...原创 2020-05-21 10:09:24 · 283 阅读 · 1 评论 -
APUE——信号与线程
APUE原文Linux 多线程应用中如何编写安全的信号处理函数LinuxThread与NPTL多线程下慎用sigwaitlinux中使用信号–sigwait()和pthread_sigmask()1. 信号与线程三个函数利用sigwait,sigwaitinfo,pthread_sigmask函数可以解决如下问题以线程同步的方式,处理异步信号在指定的线程中处理信号信号与线程主要涉及如下三个函数:#include <signal.h>int sigwait(const s原创 2020-05-21 09:58:46 · 412 阅读 · 1 评论 -
APUE——线程取消
APUE原文线程取消链接1. 线程取消过程先描述一下取消一个线程的过程:其他线程通过调用pthread_cancel()函数,向目标线程发送取消请求(cancellation request)。取消请求发出后,根据目标线程的cancel state来决定取消请求是否会到达目标线程:pthread_setcancelstatea. 如果目标线程的cancel state是PTHREAD_CANCEL_ENABLE(默认),取消请求会到达目标线程。pthread_setcancelstat原创 2020-05-21 10:00:48 · 188 阅读 · 0 评论 -
APUE——线程私有数据
APUE链接线程私有数据链接1pthread_once链接1. 线程私有数据进程中的所有线程都可以访问进程的整个地址空间。除了使用寄存器以外,线程没有办法阻止其他线程访问它的数据,线程私有数据也不例外线程私有数据(也称线程特定数据)是存储和查询与某个线程相关的数据的一种机制。把这种数据称为线程私有数据或线程特定数据的原因是:希望每个线程可以独立地访问数据副本,而不需要担心与其他线程的同步访问问题。errno被重新定义为线程私有数据。这样,一个线程做了设置errno的操作并不会影响进程中其他线程的原创 2020-05-21 10:01:29 · 399 阅读 · 0 评论 -
APUE——线程控制之线程和fork
线程控制之线程和forkfork()函数与Linux中的多线程编程使用 Mutex 实现进程间同步fork子进程通过继承整个地址空间的副本,也从父进程那里继承了所有互斥量、读写锁和条件变量的状态。如果父进程包含多个线程,子进程在fork返回以后,如果紧接着不是马上调用exec的话,就需要清理锁状态。在子进程内部只存在一个线程,它是由父进程中调用fork的线程的副本构成的。如果父进程中的线程占有锁,子进程同样占有这些锁。问题是子进程并不包含占有锁的线程的副本,所以子进程没有办法知道它占有了哪些锁并原创 2020-05-21 10:02:06 · 213 阅读 · 0 评论 -
APUE——进程终止
abort 与return exit的关系进程终止linux进程控制函数–fork,exec,exit,wait,sleep1. 进程终止方式进程有下面5种正常终止方式:在main函数内执行return语句。这等效于调用exit。调用exit函数。此函数有ISO C定义,其操作包括调用各终止处理程序(终止处理程序在调用atexit函数时登记),然后关闭所有标准I/O流等。调用_exit或_Exit函数。ISO C定义_Exit,其目的是为进程提供一种无需运行终止处理程序或信号处理程原创 2020-05-21 10:02:24 · 212 阅读 · 0 评论 -
APUE——unix出错处理
1. errno原理当UNIX函数出错时(系统调用),常常会返回一个负值,而且整型变量errno通常被设置为含有附加信息的一个值。文件<errno.h>中定义了符合errno以及可以赋予它的各种常量,这些常量都以字符E开头。另外,UNIX系统手册第2部分的第1页intro(2)列出了所有这些出错常量。在Linux中,出错常量在errno(3)手册页中列出(可以使用命令man 3 errno查看)。如果没有出错,则其值不会被一个例程清除。因此,仅当函数的返回值指明出错时,才检验其值。任一原创 2020-05-21 10:05:24 · 203 阅读 · 1 评论 -
APUE——线程同步属性与递归锁
参考文档1参考文档2原创 2020-05-21 10:03:01 · 250 阅读 · 0 评论 -
APUE——线程创建与终止
#include <iostream>#include <vector>using namespace std;using input_tag=int;using random_tag=double;class tags{ typedef int* tags_intptr; typedef int tags_int; typedef...原创 2020-05-21 10:03:56 · 275 阅读 · 0 评论 -
APUE——system函数详细分析
相关链接信号屏蔽集的继承关系fork后,子进程继承了父进程的信号屏蔽集,但是由于是两个存储空间,所以更改子进程的信号屏蔽集,并不改变父进程的信号屏蔽集#include "apue.h"struct sigaction act;sigset_t old;void fun();//void funchild();pid_t pid;void pr_mask(const char *...原创 2020-05-21 10:04:45 · 740 阅读 · 0 评论 -
APUE——alarm与pause、sigsetjmp、siglongjmp、sigsuspend
1、alarm与pause每个进程只能有一个alarm,如果之前有个alarm,在本次alarm执行完毕的时候如果还没有结束,则本次alarm返回上次alarm剩余的值。如果本次alarm执行的结果为0,则取消原来的闹钟。SIGALARM的默认执行动作是终止进程,但是大多数闹钟会捕获该信号,如果要捕获该信号,应该在alarm执行前,注册信号处理函数!1.1 例子分析2、sig...原创 2020-05-21 10:05:52 · 344 阅读 · 0 评论 -
APUE——sigprocmask,sigaction
#include "apue.h"static void sig_quit();int main(){ sigset_t newmask,oldmask,pendingmask; if(signal(SIGQUIT,sig_quit)<0) printf("can't catch SIGQUIT"); sigemptyset(&n...原创 2020-05-21 10:06:03 · 263 阅读 · 0 评论