
Linux应用程序开发
文章平均质量分 81
zhoukangli
一路向前,实践自己的梦想~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux文件管理及目录操作
一个文件系统通常包括3个部分:1)超级块 包括整个文件系统的基本信息,如块的大小,指向空间inode和数据块的指针等相关信息。2) Inode块:文件索引。他是文件系统的最基本单元。每个子目录和文件只有唯一的一个Inode块。3)数据块:具体存放数据的位置区域。 超级块的结构以及对于的操作简介: /**超级块对象有super_block结构体表示,定义在文件linu转载 2012-08-29 19:09:37 · 665 阅读 · 0 评论 -
线程通信----读写锁
什么是读写锁?在对数据的读写应用中,更多的是读操作,而写操作较少,为了满足当前能够允许多个读出,一个写入的需求,线程提供了读写锁来实现。读写锁的数据结构:转载 2012-09-04 16:08:52 · 1129 阅读 · 0 评论 -
条件变量
什么叫条件变量?条件变量使我们可以睡眠等待某种条件出现,条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。条件变量的数据结构:条件变量的属性数据结构: __c_waiting 即为条件1)初始化条件变量转载 2012-09-04 13:36:59 · 1317 阅读 · 0 评论 -
线程间的通信机制
线程间通信的机制:1)互斥锁2)条件变量3)读写锁4)线程信号 互斥锁:是一个二元变量,其状态为开锁,和上锁,与二元信号量不同的是,在互斥锁范围内的任何一个线程都可以对互斥锁上锁,但是只有上锁的线程才能够解锁。 互斥锁的初始化:互斥锁的销毁: mutex_attr_t 是mutex属性对象转载 2012-09-03 17:08:34 · 1412 阅读 · 0 评论 -
使用GDB时,调试多线程的方法
一直对GDB多线程调试接触不多,最近因为工作有了一些接触,简单作点记录吧。 先介绍一下GDB多线程调试的基本命令。 info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。thread ID 切换当前调试的线程为指定ID的线程。 break thread_test.c:123 thread all转载 2012-09-04 14:54:18 · 715 阅读 · 0 评论 -
有关宏的一些问题
今天在看linux 中tcphdr的数据结构的时候,发现struct里面可以使用#define,进而想到那些地方可以使用#define,其是否有作用域的问题?#includestruct tcphdr{ unsigned int param1; unsigned int parametor1:1; unsigned int parametor2:7; unsigned int p原创 2012-09-05 17:25:10 · 711 阅读 · 0 评论 -
线程的信号量 PV操作
线程信号量的基本原理P/V操作:p操作:p代表prolagen, 由proberen te verlagen 演变而来,意思是尝试减小。v操作:v代表verhogen ,意思是增加。pv操作主要是针对资源而言的,对资源进行p、v操作,来控制线程的同步,互斥等动作。两种信号量:二进制信号量、数值信号量(其中二进制信号量相当于互斥锁,而数值信号量代表一种资源有多个,然后通过原创 2012-09-05 16:35:14 · 1338 阅读 · 0 评论 -
Linux 文件基本概念
文件 和 流文件是具有永久性存储特定顺序的字节组成的一个有序的、有名称的集合。流是一种抽象概念,是物质从一处向另外一个地方流动的过程。文件缓冲区:全缓冲、行缓冲、无缓冲(_IOFBF 、IOLBF、 IONBF)。文件指针:struct _IO_FILE{int _flags;#define _IO_file_flags _flags原创 2012-08-28 16:32:04 · 1046 阅读 · 0 评论 -
Linux 系统下文件类型及属性
Linux下的文件模式:15~12 文件类型11~9 权限修饰位8~6 拥有者权限5~3用户组权限2~0其他用户权限文件类型:FIFO管道文件SOCK套接字文件管道文件:分为有名管道、无名管道无名管道在需要时创建,在读端和写端都关闭时自动消失有名管道是有文件名的,两个相互独立的进程可以使用这个文件名通过该管道进行通信。测试文件原创 2012-08-28 19:34:24 · 2480 阅读 · 0 评论 -
共享内存IPC
共享内存空间是在内存中开辟的一段内存空间,有自己的数据结构,包括访问权限、大小和最近访问的时间等等。由于内存共享需要的空间很大,所以系统对其做了一定的限制: 创建内存:内存创建的标识:return error on wait 不等待直接返回共享内存控制: __cmd的可选值映射共享内存对象:__shmflg的可选值,设置访问权转载 2012-09-02 16:02:47 · 531 阅读 · 0 评论 -
Linux线程
线程:线程与父进程的其他线程一起共享进程的所有资源,线程本身不拥有系统资源,只是拥有一些运行必须的数据结构而已 1)创建线程与退出线程 创建的新线程一直运行,直到满足下面的任何一种情况时退出: 1)创建线程时指定要执行的函数执行完毕2)创建线程的进程退出3)某个线程调用了exec函数4) 线程调用pthread_exit()函数退出5)线程被pt转载 2012-09-02 21:29:09 · 459 阅读 · 0 评论 -
Linux进程管理与程序开发
获取进程的父进程号PPID,进程号PID,真实用户ID,进程有效用户EUID,进程组好PGID 进程控制: fork的实例:打印结果:虽然main程序里面只有一个printf("byte!\n");,但是却打印了两遍,这个应该就是父子进程都会执行。fork()是一个拷贝父进程的副本,从而拥有自己独立的代码段、数据段以及堆栈空间,即成为一个独立的实体转载 2012-08-30 15:34:48 · 798 阅读 · 0 评论 -
Linux进程调度
用户级进程状态: Task_Interruptible 表示处于等待队列,等待资源有效时唤醒,可以被中断。Task_Uninterruptible 表示处于等待队列,等待资源有效时唤醒,不可以被中断。Task_Zomble 表示是僵死进程Task_Stopped 表示进程已经结束,已经释放了相应的资源,但未释放进程控制块PCB,因此,处于这一状态的进程可以被唤醒。转载 2012-08-31 19:07:09 · 540 阅读 · 0 评论 -
System v进程间通信
SystemV 通信的几种方式:信号量、消息队列、共享内存创建KEY拥有者及权限: 消息队列IPC原理: 1)msqid_ds消息队列数据结构,标识整个消息队列的基本情况,主要包括整个消息队列的权限,包括拥有者和操作权限等信息。2)消息队列数据结构,整个消息队列的主体。 发送信息到消息队列:创建消息队列:消息队列属性控制:转载 2012-09-01 19:23:48 · 2208 阅读 · 0 评论 -
Linux 开发初步
1.Linux 下c程序的开发标准:1)ANSIC标准 是由ANSI(美国国家标准局)与1989年制定的c语言标准。后来被ISO接受为标准,因此又称ISO c2)POSIX标准 是最初由IEEE (Institute of Electrical and Electronics Engineers )开发的标准族,部分已经被ISO接受为国际标准 2.库函数 和 系统调用库函数转载 2012-08-22 15:42:00 · 700 阅读 · 0 评论 -
进程间通信---管道和信号
同一主机上进程间通信方式:UNIX 进程通信方式:包括无名管道PIPE, 有名管道(FIFO), 和信号System V 进程通信方式:包括信号量,消息队列,和共享内存 无名管道:无名管道只能够实现有亲缘关系进程间的通信,并且无名管道在通信结束的时候自动消失,一个管道只能够实现一个进程向另一个进程发送消息.实例:其中pipedes[0],接收数据,pipedes转载 2012-08-31 21:10:14 · 602 阅读 · 0 评论 -
c++程序在Linux中编译成可执行文件的过程
C++的源文件的后缀可以是.C (大写), .cc 或者.cpp简单的例子:hello.C #includeint main(int argc, char **argv){ cout <<"Hello, world!"<<endl; return 0;}编译文件:g++ -c hello.C -Wno-deprecated (原创 2012-08-22 16:21:51 · 5420 阅读 · 0 评论 -
信号中断处理
信号的相关术语:1)产生信号2)等待状态3)递送4)捕捉 信号的来源:1)终端按键2)硬件异常产生信号3)终止进程信号4) 软件异常产生信号 处理信号:1)忽略信号2)捕捉信号3)执行系统默认操作。 给某个进程发送信号:传递信号给当前进程: 定时发送SIGALRM默认情况下,当进程接收alarm信号之后转载 2012-09-01 16:20:55 · 769 阅读 · 0 评论 -
信号量IPC
信号量通信机制主要用来实现进程间同步,信号量值用来标识系统可用资源的个数。1)信号量集合数据结构2)信号量Linux信号的管理操作:步骤:1)创建信号量semget()2)设置信号量semctl()3) 操作单个信号量semop()4)删除信号量semctl() semctl的参数: 用于信号量操作的结构体:单个信转载 2012-09-01 21:01:53 · 543 阅读 · 0 评论 -
addr2line&readelf&objdump
测试程序:zhoukangli@ubuntu:~/Documents$ cat hello.c#include#includeint main(){ int x=0; printf("hello\n"); int countk=0; char *p=NULL; *p=0x01; printf("countk=%d\n", countk);return 0;}gc原创 2016-11-28 23:17:39 · 980 阅读 · 0 评论