![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
APUE读书笔记
文章平均质量分 83
公众号:程序芯世界
这个作者很懒,什么都没留下…
展开
-
unix环境中线程的创建与终止
本篇来梳理一下apue第十一章中关于的三个知识点,因为线程的同步知识比较多,所以线程同步的知识在后面的文章中仔细梳理。下面列出要梳理的三个知识点1.线程标识2.线程创建3.线程终止 1线程标识#includeint pthread_equal(pthread_t t1,pthread_t ,t2);比较线程id,如果相同则返回非零,否则返回零 man中有句话原创 2015-01-29 22:01:48 · 1061 阅读 · 0 评论 -
由System V消息队列引发的思考__GNU_SOURCE
由System V消息队列引发的思考最近看unp的卷2,自己写了一下书上的例子。因为作者是直接包含他自己写的头文件而书中并没有列出来,所以只能自己man函数而得到相应的头文件。那么问题来了,struct msgbuf{ long mtype; char mtext[1];}书上说这个结构体包含在中,但恰恰就是在这个结构体出了问题。还是先上源代码。第一版的编译原创 2015-02-10 18:26:31 · 515 阅读 · 0 评论 -
由多线程而涉及到的top命令使用与物理cpu的概念
前面我转过一篇关于用户级线程与内核级线程的三种模型,链接如下: http://blog.csdn.net/baidu_24256693/article/details/43446763 那么问题来了,在linux系统下到底属于那种模型了?下面先看一段多线程的测试代码#include<pthread.h>void tf(void *arg){ int j; wh原创 2015-02-13 16:28:49 · 846 阅读 · 0 评论 -
64位与32位编程的数据类型区别
C/C++仅仅定义了这些基本数据类型之间的关系,并没有定义严格定义它们的字长。在不同的平台上,根据编译器不同的实现,它们的字长如下表所示:数据类型LP64ILP64LLP64ILP32LP32char转载 2015-02-28 15:04:17 · 471 阅读 · 0 评论 -
由APUE中的错误处理函数err_xxx引发的思考
APUE看了有一段时间了,最初开始看的时候都是用printf函数代替了err_xxx等错误处理函数,然后作者中的apue.h头文件我并没有用,而是用man查找函数所在的头文件,然后写到程序中,这样不用下载作者的源码,自己也可以实现书上的例子。如今有时间来看了书上附录B的出错处理函数的部分,发现也不是很难,反而又获得了一些新知识。其实我们可以把这些错误处理函数编译成动态链接库,这样以后就可以直接调用了原创 2015-02-09 22:15:59 · 676 阅读 · 0 评论 -
关于可变参数中需要用到的宏va_start,va_arg,va_end
关于可变参数中需要用到的宏 ⑴在可变参数中将用到以下这些宏:void va_start( va_list arg_ptr, prev_param );type va_arg( va_list arg_ptr, type );void va_end( va_list arg_ptr );va在这里是variable-argument(可变参数)的意思. 这些宏定义在stdarg.h中,所以用到可变转载 2015-02-09 22:02:41 · 712 阅读 · 0 评论 -
c语言的声明
在看APUE这本书上的signal函数的声明时感觉c语言声明太复杂,所以在此总结一下,看了几遍书还是觉得复杂。后来看一本书上介绍右左法则,虽然可以解决问题但我觉得按那样分析的话还是太慢了,可能是我理解的不够透彻吧。现在介绍一下我看c语言复杂声明的方法,感觉这样方便多了记住常用的几个,复杂的声明就很容易理解了。1.数组指针int (*p)[3]; 其实可以通过int a[3];来理解,原创 2014-12-12 07:35:49 · 463 阅读 · 0 评论 -
linux中信号的基本概念
1.信号的基本概念:信号全称为软中断信号,也有人称作软中断,信号机制是进程之间相互传递消息的一种方法。 2.信号的作用:进程之间可以互相通过系统调用kill发送软中断信号,通知进程发生了某个事件。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件 例如:中断用户键入中断键(CTRL+C),则会通过信号机制停止一个程序。 3.信号发生的条件:1.原创 2014-12-10 22:44:46 · 633 阅读 · 0 评论 -
unix/linux下线程私有数据实现原理及使用方法
在维护每个线程的私有数据的时候,我们可能会想到分配一个保存线程数据的数组,用线程的ID作为数组的索引来实现访问,但是有一个问题是系统生成的线程ID不能保证是一个小而连续的整数,并且用数组实现的时候由于其他线程也可以访问其数组中的数据,这样会引起数据混乱。这时候我们可以借助线程的私有数据来解决这个问题。 线程私有数据实现的主要思想是:在分配线程私有数据之前,创建与该数据相关联的健,这个转载 2015-02-03 11:32:09 · 448 阅读 · 0 评论 -
会话、前台进程组、后台进程组、孤儿进程等相关概念
终端登录:当系统自举时,内核创建ID为1的进程,也就是init进程,init进程系统进入多用户状态。init进程读取/etc/inittab,对每一个允许登录的终端设备,init调用一次fork,它所生成的子进程执行(exec)getty程序。getty为终端设备调用open函数,如果没有请求则阻塞,如果有请求,则文件描述符0,1,2就设置到该设备,然后getty输出”login“等的原创 2015-02-02 22:49:30 · 2174 阅读 · 0 评论 -
用户级线程和内核级线程
6.1.1 用户级线程和内核级线程《C++多核高级编程》第6章多线程,本章将介绍:什么是线程; 用于线程管理的pthread API;线程调度及优先级;线程竞争范围;扩展thread_object以封装线程属性功能。本节为大家介绍用户级线程和内核级线程。6.1.1 用户级线程和内核级线程线程有3种实现模型:用户级或应用程序级线程内核级线程用户级和内核级转载 2015-02-03 10:48:57 · 913 阅读 · 3 评论 -
APUE之信号中的一些基本概念
在了解信号机制前首先来解释一下关于同步和异步的区别,这里举一个通俗易懂的例子就容易理解同步与异步的概念了。同步:就是你请我吃饭,我听到了就和你吃饭,如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。异步:就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭信号:又叫软中断,是软件层次上对硬件中断的一种模拟,原理上一个进程收到一个信号与cpu收到一个中断原创 2015-02-01 11:34:29 · 505 阅读 · 0 评论 -
unix中的信号列表
Unix信号列表1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGUSR117) SIGUSR转载 2015-07-14 10:09:16 · 472 阅读 · 0 评论