![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 90
youkuxiaobin
快乐起来
展开
-
Linux device drives 5(并发与竟态)
竟态会导致对共享数据的非控制访问。发生这种错误模式的访问,会产生非预期结果。内核提供了许多可延迟代码执行的机制,比如workqueue(工作队列)、tasklet(小任务)、以及timer(定时器),而且内核代码可以是抢占式的。对于竟态的发生时很有可能的,虽然竟态一般都是小概率时间,但是带来的危害却很大。对于这种竟态问题,只要有可能就应该避免资源的共享。处理并发和竟态的办法就是把这个共原创 2012-03-24 00:03:15 · 1534 阅读 · 0 评论 -
[APUE]第三章:文件I/O
第三章:文件I/OLinux对文件操作有open、read、write、close、lseek,这些api都是不带缓冲的函数,相对于c库,这些可移植的api内部实现是有缓冲区的。int open(char* pathname, int flag, …);int read(int fd, void* buf, size_t size);int write(int fd, void*原创 2013-05-15 23:55:47 · 1264 阅读 · 0 评论 -
[APUE]第四章 文件和目录
第四章 文件和目录本章主要围绕stat这个函数来讲的。int stat(const char* pathname, struct stat* buf);int fstat(int fd, struct stat* buf);int lstat(const char* pathname, sttuct stat* buf); //如果是符号链接,返回符号链接的文件信息struct st原创 2013-05-16 00:04:44 · 1145 阅读 · 0 评论 -
[APUE]第六章 系统数据文件和信息
第六章 系统数据文件和信息口令文件struct passwd{ char * pw_name; /* Username, POSIX.1 */ char * pw_passwd; /* Password */ __uid_t pw_uid; /* User ID, POSIX.1 */ __gid_t pw_原创 2013-05-16 00:11:46 · 955 阅读 · 0 评论 -
[APUE]第七章 进程环境
第七章 进程环境引言:main函数是如何调用的命令行参数是如何传送给执行程序的典型的存储器布局是什么样式如何分配另外的存储空间进程如何使用环境变量各种不同进程的终止方式longjmp和setjmp start进程的终止正常终止: 从return返回 调用exit原创 2013-05-16 00:15:01 · 1022 阅读 · 0 评论 -
[APUE]第十二章 线程控制
线程属性:初始化:int pthread_attr_init(pthread_attr_t*attr);int pthread_attr_destory(pthread_attr_t*attr);分离状态属性设置和获取int pthread_attr_getdetachstate(constpthread_attr_t *attr, int * detachstate);int原创 2013-05-19 18:12:56 · 1235 阅读 · 0 评论 -
[APUE]第十章 信号
信号概念不存在编号为0的信号。产生信号的方式:1 当用户按某些终端键时,引发终端产生信号。2 硬件异常产生信号,比如SIGSEGV信号。3 进程调用kill函数可将信号发送给另外一个进程或者进程组。4 当检测到某种条件发生时,并应将其通知有关进程时也产生信号。比如SIGPIPE信号。应用程序对产生的原创 2013-05-19 18:04:49 · 1096 阅读 · 0 评论 -
[APUE]第十一章 线程
第十一章 线程线程也有线程ID用pthread_t 表示每个系统对pthread_t 的定义不同。int pthread_equal(pthread_t tid1, pthread_ttid2)获得线程的线程IDpthread_t pthread_self()创建线程int pthread_create(pthread_t *tid, const pthread_atr原创 2013-05-19 18:09:44 · 1046 阅读 · 0 评论 -
[APUE]第八章 进程控制
第八章 进程控制引言: 如何创建进程?执行程序?进程终止?讲述进程属性的各种ID---实际、有效、保存的用户和ID,他们是如何受到进程控制原语的影响。解释器文件和system函数,进程会计机制。 进程标识符每一个进程都有一个非负整数表示的唯一进程ID,这个进程ID是唯一的,他的使用机制和文件描述符是不相同的。文件打开的都是最小的整数(未打开),进程ID是采用延迟重用原创 2013-05-19 18:00:13 · 1895 阅读 · 0 评论 -
[APUE]第九章 进程关系
第九章 进程关系进程组每个进程组都有一个组长进程。组长进程的标识是,其进程ID等于进程组ID组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组中有一个进程存在,则该进程组就存在,这与其组长进程是否终止无关。从进程组创建开始到其中最后一个进程离开为止的时间成为一个进程组的生存期。进程中的最后一个进程可以终止,或者转移到另外一个进程组。pid_t getgpid(原创 2013-05-19 18:01:16 · 1042 阅读 · 0 评论 -
强制性锁建议性锁
fcntl有强大的功能,它能够复制一个现有的描述符,获得/设置文件描述符标记,获得/设置文件状态标记,获得/设置异步I/O所有权,获得/设置纪录锁。当多个用户共同使用,操作一个文件的情况,Linux通常采用的方法就是给文件上锁,来避免共享资源产生竞争的状态。fcntl文件锁有两种类型:建议性锁和强制性锁建议性锁是这样规定的:每个使用上锁文件的进程都要检查是否有锁存在,当然还转载 2013-02-16 21:42:38 · 1137 阅读 · 0 评论 -
函数调用的过程stack动态分析
一段代码的stack调用分析:下面分析的代码:/* * ===================================================================================== * * Filename: stack.c * * Description: gdb 栈的使用,对栈的分析过程 * *原创 2013-02-16 21:48:51 · 1164 阅读 · 0 评论 -
遍历目录所有文件
#include #include #include #include #include #include using namespace std;void travel_dir(string path_name){struct stat buf;DIR *dir;struct dirent *dir_ent;if(stat(path_name.c_str(),&buf)=原创 2011-08-18 23:19:46 · 1384 阅读 · 0 评论 -
Linux device drives chapter 3(字符设备)
第三章字符设备驱动程序1. 对字符设备的访问是通过文件系统内的设备名称的,那些名称成为特殊文件、设备文件,或者简单称之为文件系统树的节点,他们通常存在在/dev/下面,字符设备是ls 前面 是‘c’的表示字符设备,b的表示块设备。如下图:ls 查看字符设备文件的时候,在时间前面2012-03-10 的200是主设备号、0代表次设备号 。调用mknod/dev/l原创 2012-03-11 22:09:51 · 993 阅读 · 0 评论 -
Linux device drives chapter 4(调试技术)
第四章 内核调试技术内核调试技术支持make menuconfig对内核进行配置在kernel hacking这一项中包含了一些内核的调试支持make menuconfig之后就会看到kernel hacking选项一些内核调试选项有如下说明:(通过搜索找到的)CONFIG_DEBUG_KERNEL -> kernel hacking原创 2012-03-17 23:37:37 · 1205 阅读 · 1 评论 -
vim的强大,vim设置和插件的使用,脱离windows才是王道
首先分享下我的vimrc设置如下map :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1let Tlist_Auto_Open=1 set nocompatible""""""""""界面""""""""""c原创 2012-04-08 21:39:22 · 4323 阅读 · 0 评论 -
Linux可靠信号和不可靠信号
在早期的UNIX中信号是不可靠的,不可靠在这里指的是:信号可能丢失,一个信号发生了,但进程却可能一直不知道这一点。现在Linux 在SIGRTMIN实时信号之前的都叫不可靠信号,这里的不可靠主要是不支持信号队列,就是当多个信号发生在进程中的时候(收到信号的速度超过进程处理的速度的时候),这些没来的及处理的信号就会被丢掉,仅仅留下一个信号。可靠信号是多个信号发送到进程的时候(收到信号原创 2012-05-07 23:09:06 · 9427 阅读 · 0 评论 -
C++虚函数表解析(转) ——写的真不错,忍不住转了
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过转载 2012-05-13 11:46:30 · 832 阅读 · 0 评论 -
半译 wget
为了研究HTTP协议,只有硬啃wget 的英文了Wget 中文使用手则名称: wget是一个非交互行的下载器语法: wget[option]... url...描述: GNUwget 是一个免费的非交互的web服务器下载工具。Wget支持 HTTP、HTTPS、FTP并且支持HTTP代理 wget是非交互的,原创 2012-06-24 15:45:58 · 1492 阅读 · 0 评论 -
linux 程序的调用过程
Linux汇编---函数调用过程 或许习惯于用高级语言编程的大部分同学都会忽略了函数调用的具体过程是怎样的,如果想知道这个过程就不得不从汇编入手,但汇编语言又晦涩难懂。在这里谨以一个简单的例子说说我对函数调用过程的学习心得。 先上C语言写的代码: 1 #include 2 3 4 unsigned int test转载 2012-06-23 11:30:54 · 999 阅读 · 0 评论