Linux 高级编程
小刀刀
while(1)
{
Thinking;
doing;
}
展开
-
关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
成为一名精通 Linux 程序设计的高级程序员一直是不少朋友孜孜以求的目标。根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows 程序员的 1.8 倍、Java 程序员的 2.6 倍, Linux 程序员年终奖金平均为 Windows 程序员的 2.9 倍。同时数据显示,随着工作经验的增长, Linux 程序员与 Windows 程序员的收入差距还有扩大的趋势。Denis转载 2012-04-01 14:23:53 · 1691 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 二 )----->代码区 ( pthread_attr_t 线程属性实例 )
1.detach实例://!> detach#include #include #include void * entrance( void * arg ){ int get_attr_int; pthread_attr_t attr; printf("子进程创建OK, ID == %d\n原创 2012-03-20 12:12:33 · 1371 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 三 )------->代码区 ( 信号灯实例 )
1.sem_open与sem_close与sem_unlink与sem_getvalue#include #include #include #include #include int main( int argc, char ** argv ){sem_t * sem; int val;if( argc != 2 ){printf("请原创 2012-03-21 06:40:06 · 1643 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 六 )----->代码区 ( 共享内存实例 )
注意:以下编译加上 -lrt例如:gcc -o server server.c -lrt1.创建一个共享内存区的例子#include #include #include #include int main( int argc, char ** argv ){ intshm_id; if( argc !=2 )原创 2012-03-21 06:48:01 · 1321 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 四 )------>代码区 ( 互斥量实例 )
加锁与不加锁的对比://!>不加锁测试//!>简单的售票小测试程序#include #include #include #include #include int g_ticket =10; //!> 票数目void * entrance_1( void * arg ){ while(g_ticket >原创 2012-03-21 06:42:51 · 1392 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 二 )----->pthread_attr_t 线程属性
附加代码链接: 代码链接1. 线程属性: 使用pthread_attr_t类型表示,我们需要对此结构体进行初始化, 初始化后使用,使用后还要进行去除初始化! pthread_attr_init:初始化 pthread_attr_destory:去除初始化原创 2012-03-20 12:14:52 · 1021 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 五 )----->代码区 ( 条件变量实例 )
1.条件变量的基本作用//!> 条件变量的基本作用#include #include #include //!> 注意此处为了方便就使用静态变量吧pthread_mutex_t mutex =PTHREAD_MUTEX_INITIALIZER; //!> 初始化互斥锁pthread_cond_t原创 2012-03-21 06:45:38 · 1402 阅读 · 0 评论 -
Linux 僵尸进程 ( Zombie or defunct )
关于Linux僵尸进程,一般是由于子进程结束的时候,会有一些资源没有释放掉,直到父进程结束或者由父进程去处理它才可以! 僵尸进程就是子进程已经结束,但是父进程没有处理的进程! 父进程可以使用waitpid,wait等来处理僵尸进程! if 父进程不幸在子进程之前“死了”,那么子进程就交由init( pid == 1 )进原创 2012-06-21 19:07:10 · 3211 阅读 · 0 评论 -
关于一个 date-time 时间服务的daemon process 的代码实现
简单的 daemon process 的实现,主要的步骤是:fork -> setsid -> umusk -> chdir -> close fds -> openlog -> 服务程序! server.c#include #include #include #include #include #include #include #i原创 2012-06-23 14:01:54 · 1224 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 六 )----->共享内存区
Attention:打开相关代码区1. 介绍 POSIX 共享内存和SYSTEMV的共享内存的框架是差不多的,细节有区别! 在前面的SYSTEM V的共享内存区我们已经知道共享内存区是最快的IPC形式! 例如在两个进程之间传输data,那么此方法将会是非常高效的!、 共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在原创 2012-03-21 06:50:01 · 2131 阅读 · 2 评论 -
Linux 多线程编程( POSIX )( 三 )------->信号灯
Attention:代码区链接一. POSIX有名信号灯 所谓有名就是给一个类似句柄的key。 1.创建并初始化有名信号灯 函数:sem_open #include sem_t *sem_open( const char *name, int oflag, mode_t mode, unsigned intv原创 2012-03-21 06:41:46 · 1762 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 五 )----->条件变量
Attebtion:打开相关代码链接1. 条件变量: 条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到 某特殊情况发生为止。通常条件变量和互斥锁同时使用。 条件变量使我们可以睡眠等待某种条件出现。 条件变量是利用线程间共享的全局变量进行同步的机制,主要包括两个动作: >: 一个线程等待"条件变量的条件成原创 2012-03-21 06:47:05 · 1156 阅读 · 0 评论 -
Linux 进程通信(System V) 第二节 ------> FIFO
一.一些简单理解:我们知道管道是没有标志的,所以只能是在同一个进程组中进行通信,不同的祖先产生的进程之间是不可以的!!所以此处引入FIFO机制同样也只能是单流的!不同的是FIFO是有标志的!每个FIFO都有一个路径名与之相关!FIFO也称为 “有名管道”#include #include int mkfifo( const char* pathname, m原创 2012-03-20 12:00:58 · 1330 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 一 )-----> 基础篇
ATTETION:附加代码地址: 点击打开链接 http://blog.csdn.net/shanshanpt/article/details/73727081. 所谓线程就是“一个进程内部的一个控制序列”。也就是一个进程内部的并行的基础!2. Linux进程可以看成只有一个控制线程: 一个进程在同一时刻只做一件事情。有了多个控制原创 2012-03-20 12:11:01 · 1061 阅读 · 0 评论 -
Linux 僵尸进程
怎样产生僵尸进程的: 一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用 exit,它的作用是使进程退出,但也仅仅限于将一个正常的进程变成一个僵尸进程,并不能将其完全销毁)。 在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有内存空间,没有任何可执行代码,也不能被调度,仅仅转载 2012-03-20 11:59:22 · 920 阅读 · 0 评论 -
Linux 进程通信(System V) 第一节 ------> 管道 pipe
简介:一.#include int pipe(int fd[2]); //!>注意参数是fd[0]是读的文件描述符,fd[1]是用来写的文件描述符一般用于 “父子进程” 之间的通信!因为pipe是没有标志的,所以只能在一个进程集中运作!“单向pipe”: 父进程创建好 pipe 后,同时通过 fork() 创建一个子进程,然后父进程就可以关原创 2012-03-20 12:00:00 · 1334 阅读 · 0 评论 -
Linux 进程通信(System V) 第三节 ------> msg queue 消息队列
一.简介 目前主要有两种类型的消息队列:POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用。考虑到程序的可移植性,新开发的应用程序应尽量使用POSIX消息队列。 消息队列是内核创建的一个数据结构,是有标识的! 对于有读写权限的进程来说哦,所以可以通过对共享的消息进程的读写实现不同进程之间的通信! 关于消息队列的数据结构:原创 2012-03-20 12:03:55 · 1941 阅读 · 0 评论 -
Linux 进程通信(System V) 第四节 ------>信号量
1.并不是IPC机制,它是一种提供不同进程之间或者是同一个进程的不同的线程之间的同步!2.类型: .二元信号:值为0或者1,1说明有一个可以资源,0说明此时正好再用,其他进程等待 相当于是 P 和 V 问题... .计数信号量:值在0和一个大于0的值之间,一般是可用的资源数量原创 2012-03-20 12:05:00 · 739 阅读 · 0 评论 -
Linux 进程通信(System V) 第五节 ------>共享内存区
一:简介前面已经学过:pipe,FIFO,msg queue, 今天要学的是“共享内存区”1.共享内存区是进程通信中最快的方式,而且传递的信息量是很大的!2.是通过内存区间映射到进程空间来实现的!因此这种进程间的通信不再涉及到内核!(即进程不是通过执行任何的进入内核的系统调用来传递数据的。这样内核就必须建立允许各个进程之间的共享内存区的映射关系,然后一直管理该内存区!同时也原创 2012-03-20 12:07:56 · 1150 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 一 ) ----> 代码区
1.基础线程创建:#include #include #include void * print_id( void * arg) //!>这是线程的入口函数 { printf("TheCurrent process is: %d \n",getpid());原创 2012-03-20 12:09:41 · 1316 阅读 · 0 评论 -
Linux 多线程编程( POSIX )( 四 )------>互斥量
Attention: 打开相关代码链接1. 互斥锁: 说白了就是可以是线程之间或者进程之间互斥访问共享资源! 函数: pthread_mutex_init 初始化一个互斥量 pthread_mutex_lock 给一个互斥量加锁 pthread_mutex_trylock 在锁原创 2012-03-21 06:44:45 · 1722 阅读 · 0 评论 -
ioctl()函数详解
我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的转载 2014-02-25 09:16:33 · 211801 阅读 · 8 评论