《UNIX环境高级编程》
文章平均质量分 87
西瓜游侠
希望自己能够开心
展开
-
我读过的最好的epoll讲解--转自”知乎“
我读过的最好的epoll讲解--转自”知乎“首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数据,但是服务器还没有把数据传回来),这时候该怎么办?阻塞:阻塞是个什么概念转载 2016-04-17 12:52:17 · 538 阅读 · 0 评论 -
Linux时间函数之 gettimeofday() 函数之使用方法
Linux时间函数之 gettimeofday() 函数之使用方法原创 2016-03-12 14:38:09 · 3701 阅读 · 0 评论 -
linux 设置用户ID、设置组ID
linux 设置用户ID、设置组ID转载 2016-03-12 10:55:35 · 4520 阅读 · 0 评论 -
linux中fork()函数详解
进程fork()转载 2016-03-11 20:31:21 · 377 阅读 · 0 评论 -
I/O重定向的原理和实现
I/O重定向的原理和实现转载 2016-03-11 14:31:01 · 617 阅读 · 0 评论 -
exit 与 _exit的区别
exit 与 _exit的区别转载 2016-03-11 11:41:16 · 735 阅读 · 0 评论 -
linux 下strftime()的用法
strftime() 函数将时间格式化我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下:size_t strftime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr);我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。转载 2016-05-09 13:15:29 · 1289 阅读 · 0 评论 -
C程序的存储空间布局
从历史上讲,C程序一直由下面几部分组成:正文段。这是由CPU执行的机器指令部分。通常,正文段是可共享的,所以即使是频繁执行的程序(如文本编辑器、C编译器和shell等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外而修改其自身的指令。初始化数据段。(所有带有初始值的全局变量)通常将此段称为数据段,它包含了程序中需明确地赋初值的变量。例如,C程序中出现在任何函数之外转载 2017-01-03 14:31:04 · 483 阅读 · 0 评论 -
void (*signal(int signo, void (*func) (int))) (int) 理解
转载:http://blog.csdn.net/sever2012/article/details/8281271signal(int signo, void (*func)(int))signal是一个函数,有2个参数,第一个是int类型,第二个参数是一个函数指针void (*signal(int signo, void (*func) (int))) (int)转载 2017-01-04 20:17:37 · 1403 阅读 · 0 评论 -
关于《UNIX环境高级编程(第三版)》中apue.h头文件的设置
apue.h头文件(UNIX环境高级编程) apue.h是作者自己写的一个文件,包含了常用的头文件,系统不自带。其中包含了常用的头文件,以及出错处理函数的定义。使用起来确实很方便。 apue.h内容如下:#ifndef _APUE_H #define _APUE_H #define _XOPEN_SOURCE 600 /*转载 2016-03-05 10:41:44 · 1183 阅读 · 0 评论 -
long int strtol(const char *nptr, char **endptr, int base)
long int strtol(const char *nptr, char **endptr, int base)strtol()会将nptr指向的字符串,根据参数base,按权转化为long int, 然后返回这个值。参数base的范围为2~36,和0;它决定了字符串以被转换为整数的权值。可以被转换的合法字符依据base而定,举例来说,当base为2时,合法字符为‘0’,‘1’;base为8时,合法字符为‘0’,‘1’,……‘7’;base为10时,合法字符为‘0’,‘1’,……‘9’;base转载 2016-03-12 16:11:28 · 1518 阅读 · 1 评论 -
Linux信号(signal) 机制分析
本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。转载 2016-03-16 14:06:55 · 555 阅读 · 0 评论 -
centos 安装 CodeBlocks
linux centos 下codeblocks安装原创 2016-05-10 16:52:46 · 1229 阅读 · 0 评论 -
ftruncate 函数的使用
ftruncate(改变文件大小) 相关函数 open,truncate 表头文件 #include<unistd.h> 定义函数 int ftruncate(int fd,off_t length); 函数说明 ftruncate()会将参数fd指定的文件大小改为参数length指定的大小。 参数fd为已打开的文件描述词,而且必须是以写入模式打开的文件。 如果原来的文件大小比参数length大,则超过的部分会被删去。 返回值 执行成功则返回0,失败返回-1,错误原因存于原创 2016-03-29 13:32:49 · 763 阅读 · 0 评论 -
互斥量属性
转载出处:http://blog.csdn.net/ctthuangcheng/article/details/9357133 互斥量具有一些属性,通过修改这些属性可以控制锁的一些行为。缺省的互斥锁属性及其值如下:pshared: PTHREAD_PROCESS_PRIVATEtype: PTHREAD_MUTEX_DEFAUL转载 2016-03-23 12:02:37 · 2586 阅读 · 0 评论 -
编译问题
问题一: 11_2.c:(.text+0x2b2): undefined reference to `pthread_create'解决方法: 在 编译时,在 gcc指令之后添加 -lpthread 问题二: timeval.c:(.text+0x6f): undefined reference to `clock_gettime原创 2016-03-18 17:01:20 · 335 阅读 · 0 评论 -
线程同步——互斥量
线程同步——互斥量同步的概念多个线程可以共享内存空间,在程序中不可避免的需要多个线程协作完成某个功能。那么这些线程就可能会使用某个公共的资源。比如说全局变量,某个文件等等。为了不产生冲突,冲突会产生在多个线程的写操作之间,而读操作则很安全。这就需要多个线程之间的同步。互斥量的原理互斥量 实现同步的机制很好理解。可以将互斥量想象为锁。只有当一个线程获得该锁时才有权限对共享资源的操作。从而可以理解为该线程对共享资源上了一把锁,其他线程无权操作。在此线程操作完成之后,需要解锁以便其他线程可以获得该锁。转载 2016-03-18 15:03:51 · 352 阅读 · 0 评论 -
C语言中#define的用法
C语言中#define的用法转载 2016-03-18 13:01:41 · 650 阅读 · 0 评论 -
函数类型和函数指针类型
函数类型和函数指针类型在C语言中,函数也是一种类型,可以定义指向函数的指针。我们知道,指针变量的内存单元存放一个地址值,而函数指针存放的就是函数的入口地址(位于.text段)。下面看一个简单的例子:转载 2016-04-05 10:21:00 · 578 阅读 · 0 评论 -
Linux-进程、进程组、作业、会话、控制终端详解
Linux-进程、进程组、作业、会话、控制终端详解转载 2016-03-16 22:51:38 · 584 阅读 · 0 评论 -
线程间的通信、同步方式、进程间通信方式
转载:http://www.jianshu.com/p/9218692cb2091、线程间的通信方式使用全局变量 主要由于多个线程可能更改全局变量,因此全局变量最好声明为volatile。使用消息队列实现通信 在Windows程序设计中,每一个线程都可以拥有自己的消息队列(UI线程默认自带消息队列和消息循环,工作线程需要手动实现消息循环),因此可以采用消息进行线程间通信sendMessage转载 2017-08-10 17:52:14 · 899 阅读 · 0 评论