linux
joejames
这个作者很懒,什么都没留下…
展开
-
比较全面的gdb调试命令
用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更转载 2014-07-19 12:53:43 · 1088 阅读 · 0 评论 -
linux的内存管理机制
在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方面,区别于Windows的内存管理。主要特点是,无论物理内存有多大,Linux都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。而Windows是只在需要内存时,才为应用程序分配内存,并不能充分利转载 2014-07-19 14:15:58 · 1630 阅读 · 0 评论 -
linux内核读写文件
在VFS的支持下,用户态进程读写任何类型的文件系统都可以使用read和write着两个系统调用,但是在linux内核中没有这样的系统调用我们如何操作文件呢?我们知道read和write在进入内核态之后,实际执行的是sys_read 和sys_write,但是查看内核源代码,发现这些操作文件的函数都没有导出(使用EXPORT_SYMBOL导出),也就是说在内核模块中是不能使用的,那如何是好?通过原创 2014-06-30 11:04:48 · 687 阅读 · 0 评论 -
linux用户权限管理
0.用户1、建用户:adduser nuoline //新建nuoline用户passwd nuoline //给nuoline用户设置密码2、建工作组groupadd test //新建test工作组3、新建用户同时增加工作组useradd -g test nuoline //新建phpq用户并增加到test工作组注::-g 所属组 -d 家目录 -s 所用的SH转载 2014-07-22 15:23:08 · 535 阅读 · 0 评论 -
C++使用共享内存实现进程间通信
C++使用共享内存实现进程间通信文件映射是一种实现进程间单向或双向通信的机制。它允许两个或多个本地进程间相互通信。为了共享文件或内存,所有的进程必须使用相同的文件映射的名字或是句柄。为了实现共享文件,第一个进程先调用CreateFile方法。接下来调用CreateFileMapping方法来创建一个文件映射对象。并为文件映射指明一个句柄和名称。由于事件,信号,互斥对象和文件映射等这些内核对转载 2014-07-27 11:00:56 · 11735 阅读 · 3 评论 -
共享内存多进程间通信,进程间同步使用信号量来实现
Linux 环境下C编程指南,通过共享内存进行进程间通信的例子,进程间同步使用信号量来实现。代码 11-5使用说明:这是一个简单的服务器和客户端程序,如果启动程序时不带参数,则执行服务器程序;如果带参数,则执行客户端程序,所带参数只有一个,就是服务器端所显示的共享内存的引用ID。实现原理:服务器端启动后,创建信号量和共享内存,并将共享内存的引用ID显示出来,将信号量转载 2014-07-27 11:06:58 · 2027 阅读 · 0 评论 -
大端模式和小端模式
在 各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机 通信领 域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正 确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:Big-Endian和Little-Endian,下面先从字节序说起。一、什转载 2014-07-31 07:51:55 · 432 阅读 · 0 评论 -
Linux虚拟内存实现原理
下面是一篇翻译文章,原文出自MongoDB的核心开发工程师 Kristina Chodorow 的个人博客,由NoSQLFan翻译整理。我们都知道,MongoDB 使用内存映射的方式来进行数据文件的存取操作。本文的目的就在于描述操作系统虚拟内存的使用及内存映射的内部实现。以下是译文当你运行一个程序,程序中有许多东西需要存储,堆、栈以及各种功能库。而这一切在你写程序时可能转载 2014-08-11 08:27:10 · 895 阅读 · 1 评论 -
Linux C中库函数和系统调用的区别
从程序完成的功能来看,函数库提供的函数通常是不需要操作系统的服务. 函数是在用户空间内执行的,除非函数涉及到I/O操作等,一般是不会切到核心态的。系统调用是要求操作系统为用户提供进程,提供某种服务,通常是涉及系统的硬件资源和一些敏感的软件资源等。 函数库的函数,尤其与输入输出相关的函数,大多必须通过Linux的系统调用来完成。因此我们可以将函数库的函数当成应用程序设计人员与转载 2014-08-30 13:33:53 · 1491 阅读 · 0 评论 -
linux内存映射mmap原理分析
一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。 原理首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只 硬盘上文件 的位置与进程 逻辑地址空间 中一块大小相转载 2014-07-19 11:07:24 · 21327 阅读 · 20 评论 -
多线程和多进程的区别
很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。我想,只要你不是整天都写那种int main()转载 2014-07-17 23:59:49 · 2461 阅读 · 0 评论 -
c++内存分布
为什么需要知道C/C++的内存布局和在哪可以可以找到想要的数据?知道内存布局对调试程序非常有帮助,可以知道程序执行时,到底做了什么,有助于写出干净的代码。本文的主要内容如下:源文件转换为可执行文件可执行程序组成及内存布局数据存储类别一个实例总结源文件转换为可执行文件源文件经过以下几步生成可执行文件:1、预处理(preprocessor):对#include、#def转载 2014-07-19 10:49:34 · 1835 阅读 · 1 评论 -
Linux内核的同步机制
一、引言在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作、信号量(semaphore)、读写信号量(rw_s转载 2014-07-19 13:09:13 · 1422 阅读 · 0 评论 -
分析linux共享内存的实现
Linux对共享内存的实现,在2.6采用了内存映射技术。对于内存共享,主要集中在三个内核函数,他们是do_shmat,sys_shmat和sys_shmdt。其中,sys_shmat调用了do_shmat最终实现了共享内存的attach。sys_shmdt实现了共享内存的detach和destroy。下面我主要对这三个函数的源码进行分析。在分析之前,首先介绍共享内存实现原理。 原理:转载 2014-07-18 21:50:01 · 7173 阅读 · 0 评论 -
linux上常用的命令
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。tcpdump命令用于监视TCP/IP连接并直接读取数据链路层的数据包头。 ipcs命令往标准输出写入一些关于活动进程间通信设施的信息。ipcrm 命令删除一个或更多的消息队列、信号量集或者共享内存标识。原创 2014-07-19 14:28:57 · 3326 阅读 · 0 评论 -
Linux信号列表
我们运行如下命令,可看到Linux支持的信号列表:~$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15转载 2014-07-19 14:31:32 · 1454 阅读 · 0 评论 -
什么是死锁?如何避免死锁?
所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须转载 2014-07-19 14:40:13 · 60424 阅读 · 0 评论 -
linux相关基础
动态链接是指在生成可执行文件时不将所有程序用到的函数链接到一个文件,因为有许多函数在操作系统带的dll文件中,当程序运行时直接从操作系统中找。 而静态链接就是把所有用到的函数全部链接到exe文件中。 动态链接是只建立一个引用的接口,而真正的代码和数据存放在另外的可执行模块中,在运行时再装入; 而静态链接是把所有的代码和数据都复制到本模块中,运行时就不再需要库了。转载 2014-07-19 14:49:47 · 2970 阅读 · 0 评论 -
Linux守护进程的编程实现
Linux 守护进程的编程方法 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本转载 2014-07-17 23:38:09 · 1391 阅读 · 0 评论 -
常用linux命令
1、命令基本格式ls2、文件处理命令目录处理命令 mkdir -p cd pwd rmdir文件处理命令 cp mv链接命令 ln3、文件搜索命令locatewhereiswhichfind . -size 25kfind /root -size 25Mfind /root -inum 262421find /etc -size +20k -a -size -50k 在etc目录下找文件大小在2...原创 2018-03-25 17:48:53 · 142 阅读 · 0 评论