Linux学习笔记
aploughman
这个作者很懒,什么都没留下…
展开
-
UNIX环境高级编程中头文件配置方法
《APUE》一书中几乎所有实例都用到了“apue.h”头文件,若不预先配置,则不能运行书中源代码实例。以下转自:http://blog.csdn.net/u013660169/article/details/41744759在http://www.apuebook.com/下载src.tar.gz源代码的压缩包。登不上该网站的童鞋可以自己百度apue.h,网上很多该头文件的下载地址的,自己动手转载 2016-11-15 22:00:22 · 818 阅读 · 0 评论 -
条件变量
首先,让我们考虑以下情况:线程为查看已链接列表而锁定了互斥对象,然而该列表恰巧是空的。这一特定线程什么也干不了 -- 其设计意图是从列表中除去节点,但是现在却没有节点。因此,它只能: 锁定互斥对象时,线程将调用 pthread_cond_wait(&mycond,&mymutex)。pthread_cond_wait() 调用相当复杂,因此我们每次只执行它的一个操作。 pthrea转载 2016-12-06 20:32:17 · 196 阅读 · 0 评论 -
带缓冲的I/O和不带缓冲的I/O
先来看看不带缓存的I/O和标准(带缓存的)I/O都有那些不带缓存的I/O: read,write,open......标准(带缓存的)I/O: fgets,fread,fwrite.....这里使用两个对应的函数进行比较:ssize_t write(int filedes, const void *buff, size_t nbytes)size_t fwrit转载 2016-11-24 16:39:12 · 297 阅读 · 0 评论 -
linux中使用信号--sigwait()和pthread_sigmask()
1. sigwait函数:sigwait等一个或者多个指定信号发生。 它所做的工作只有两个:第一,监听被阻塞的信号;第二,如果所监听的信号产生了,则将其从未决队列中移出来(这里实时信号和非实时信号又有区别,体现在取出的顺序等,具体自己取网上查,这里不再详述)。sigwait并不改变信号掩码的阻塞与非阻塞状态。 在POSIX标准中,当进程收到信号时,如果是多线程的情况,我们是转载 2016-12-07 22:42:20 · 668 阅读 · 1 评论 -
可递归锁与非递归锁
可递归锁与非递归锁转载自《线程同步之利器(1)——可递归锁与非递归锁》http://blog.csdn.net/zouxinfox/archive/2010/08/25/5838861.aspx最常见的进程/线程的同步方法有互斥锁(或称互斥量Mutex),读写锁(rdlock),条件变量(cond),信号量(Semophore)等。在Windows系统中,临界区(Critical转载 2016-12-07 22:44:13 · 908 阅读 · 0 评论 -
虚地址空间
当处理器读或写入内存位置时,它会使用虚拟地址。作为读或写操作的一部分,处理器将虚拟地址转换为物理地址。通过虚拟地址访问内存有以下优势:程序可以使用一系列相邻的虚拟地址来访问物理内存中不相邻的大内存缓冲区。程序可以使用一系列虚拟地址来访问大于可用物理内存的内存缓冲区。当物理内存的供应量变小时,内存管理器会将物理内存页(通常大小为 4 KB)保存到磁盘文件。数据或代码页会根转载 2016-12-07 22:46:05 · 347 阅读 · 0 评论 -
信号屏蔽字
1. 概念:信号屏蔽字就是进程中被阻塞的信号集, 这些信号不能发送给该进程, 它们在该进程中被"屏蔽"了. 后面我们会提到, 实际上它们是被阻塞了.2. 信号屏蔽函数:#includeint sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset);成功则返回0转载 2016-12-07 22:48:19 · 412 阅读 · 0 评论 -
可重入、异步信号安全以及线程安全的概念
由于前段时间,程序偶尔异常挂起不工作,检查后发现时死锁了,原因就是:在信号处理函数里面调用了fprintf. printf等io函数是需要对输出缓冲区加锁,这类函数对本身是线程安全的,但是对信号处理函数来说是不可重入的(在没有返回之前,不能再次调用),即不是异步信号安全的。 对于printf这类函数,可以这样理解:它们使用了全局数据结构(iobuffer),所以不是线程安全的(多个转载 2016-12-08 10:29:46 · 443 阅读 · 0 评论 -
源码、补码int型的-32768~32767
本文谈论的都为有符号数。这得从二进制的原码说起:二进制原码最大为0111111111111111=215-1=32767二进制原码最小为1111111111111111=-(215-1)=-32767正0和负0:0000000000000000=1000000000000000=0所以,二进制原码表示时,范围是-32767~-0和0~32767,因为有两个零的存转载 2016-12-20 17:09:50 · 2306 阅读 · 0 评论 -
线程总结
线程与进程 一个UNIX进程可以理解为一个线程加上地址空间、文件描述符和其他数据。线程和进程的区别在于多个线程可以共享一个地址空间,而做不同的事情。2线程标识头文件#include 函数原型int pthread_equal(pthread_t tid1, pthread_t ti转载 2016-12-06 20:30:18 · 405 阅读 · 0 评论 -
目录、目录项、i节点
目录: 1.作用:文件是通过目录组织起来的,目录相当于文件夹,用来容纳对应的文件2.一个例子: /home/csj/1.c 什么是目录,分析一下上面的例子。根目录 / 这个名词应该都不陌生,后面的 home表示家目录,csj也表示目录,最后的1.c表示一个程序文件3.上面的例子中目录中包含其他目录(即子目录),目录从而层层嵌套,形成了文件路径。转载 2016-11-23 20:16:20 · 8699 阅读 · 0 评论 -
进程控制
说明:1、为什么写的第一篇阅读笔记就是八呢?因为之前看apue并没有写读书笔记,一直看到第八章,也就是标题中的这一章,才发现,不写是不行的,因为当我自己大量的接受新知识的时候,会遗忘的很厉害,也就是传说中的前学后忘。 2、之前差的那些章节,准备回过头再看一遍,然后写点笔记 3、这是一个笔记,笔记中尽可能详细的记录了我的理解,可能跟你的理解不一样,欢迎赐教。一、进程ID转载 2016-11-16 21:27:08 · 531 阅读 · 0 评论 -
同步I/O和异步I/O
从上篇文章的介绍我们知道linux内核根据TCP/IP网络模型,给我们隐藏了传输层以下的网络传输细节,我们的网络应用程序只需要针对socket编程即可。这篇我们立足网络数据包的I/O。谈谈linux的一些I/O知识。 1. 基础知识 我们知道Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,转载 2016-12-10 16:07:49 · 795 阅读 · 0 评论 -
Linux常用命令
本文转自http://blog.csdn.net/ljianhui/article/category/1349446/21、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:[plain] view plain copy print?cd /ro转载 2016-11-15 19:39:11 · 216 阅读 · 0 评论 -
Linux前台进程和后台进程
Linux 前台 和 后台进程 说明Linux 前台 和 后台进程 说明 一. 有关进程的几种常用方法 1.1 & 符号 在命令后面加上一个 & 符号,表示该命令放在后台执行,如: [oracle@singledb ~]$ crontab -l 20 17 * * * /u02/rman_incremental_backup.sh &转载 2016-12-02 12:00:04 · 3154 阅读 · 0 评论 -
硬链接和软连接
首先我们需要了解Linux下硬链接以及软连接的基本概念.硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件.下面详细介绍一下硬链接和软连接之间的区别.1.硬链接和原来的文件没有什么区别,而且共享一转载 2016-11-22 20:24:58 · 284 阅读 · 0 评论 -
线程分离
线程的分离状态决定一个线程以什么样的方式来终止自己。线程的默认属性,一般是非分离状态,这种情况下,原有的线程等待创建的线程结束。只有当pthread_join()函数返回时,创建的线程才算终止,才能释放自己占用的系统资源。而分离线程没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统资源。程序员应该根据自己的需要,选择适当的分离状态。转载 2016-12-05 22:32:19 · 286 阅读 · 0 评论 -
pthread_exit函数以及Linux上编译链接问题
原型:void pthread_exit(void *retval) 用法:#include 功能:使用函数pthread_exit退出线程,这是线程的主动行为;由于一个进程中的多个线程是共享数据段的,因此通常在线程退出之后,退出线程所占用的资源并不会随着线程的终止而得到释放,但是可以用pthread_join()函数(下篇博客中讲到)来同步并释放资源。转载 2016-12-05 22:35:39 · 1495 阅读 · 0 评论 -
临界区,互斥量,信号量,事件的区别
最早的一篇原文:http://hi.baidu.com/cnrjm/blog/item/5d217e54ff863550564e00b9.html 四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户转载 2016-12-05 22:36:55 · 187 阅读 · 0 评论 -
getopt函数详解
最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴。好了,虽然啰嗦了点,但确实是忠告。步入正题:我们的主角----getopt()函数。英雄不问出处,getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘记把他老人家include上。 再来看一下这家伙的原型(不是六耳猕猴):int getopt(i转载 2017-01-10 17:15:39 · 303 阅读 · 1 评论