linux

Linux中线程使用详解

线程与进程为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题。  使用多线程的理由之一是和进程相比,它是一种非常"节俭"的多任务操作方式。我们知道,在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段...
代码星球·2020-08-04

转:Linux字符编码方式

汉字编码:*GB2312字集是简体字集,全称为GB2312(80)字集,共包括国标简体汉字6763个。*BIG5字集是台湾繁体字集,共包括国标繁体汉字13053个。*GBK字集是简繁字集,包括了GB字集、BIG5字集和一些符号,共包括21003个字符。*GB18030是国家制定的一个强制性大字集标准,全称为GB1803...
代码星球·2020-08-02

Free命令详解和释放linux Cache(转载)

因为LINUX的内核机制,一般情况下不需要特意去释放已经使用的cache。这些cache起来的内容可以增加文件以及的读写速度。先说下free命令怎么看内存[root@yuyiiproc]#freetotalusedfreesharedbufferscachedMem:51558829545222013602060640...

转:Linux中的内存管理

前一段时间看了《深入理解Linux内核》对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看法和认识。我比较喜欢搞清楚一个技术本身的发展历程,简而言之就是这个技术是怎么发展而来的,在这个技术之前存在哪些技术,这些技术有哪些特...
代码星球·2020-08-02

转:浅谈Linux的内存管理机制

一物理内存和虚拟内存        我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。物理内存就是系统硬件提供的内存大小,是真正...

linux C 中的volatile使用

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:    1). 并行...
代码星球·2020-08-02

LINUX 下 ipv6 socket 编程

大家都知道,随着互联网上主机数量的增多,现有的32位IP地址已经不够用了,所以推出了下一代IP地址IPv6,写网络程序的要稍微改变一下现有的网络程序适应IPv6网络是相当容易的事。对于我们来说就是IP地址变化了,所以程序里在用到IP地址的地方做相应的改变就可以了。记住:主要是改变程序里设置IP地址和端口等部分的代码。服...
代码星球·2020-08-02

Linux下异常信号

我们介绍一些标准信号的名称以及它们代表的事件。每一个信号名称是一个代表正整数的宏,但是你不要试图去推测宏代表的具体数值,而是直接使用名称。这是因为这个数值会随不同的系统或同样系统的不同版本而不同,但是名称还算是标准化和统一的。  这些名称定义在signal.h中。  intNSI...
代码星球·2020-08-02

linux signal 列表

Linux信号表 Linux支持POSIX标准信号和实时信号。下面给出LinuxSignal的简表,详细细节可以查看man7signal。 默认动作的含义如下: Term   终止进程  信号取值默认动作含义(发出信号的原因)SIGHUP1...
代码星球·2020-08-02

linux signal

当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以cli...
代码星球·2020-08-02

转:Linux性能评测工具之一:gprof篇

改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数消耗掉了大部分执行时间,这通常都不是非常明显的。GNU编译器工具包所提供了一种剖析工具GNUprofiler(gprof)。gprof可以为Linux平台上的程序精确分析性能瓶颈。gprof精确地给出函数被调用的时间和次数,给出函数调用关系。 ...

转: 关于Linux常用的二进制文件分析方法

当你在unix下拿到一个二进制文件但不知道它是什么的时候,可以通过以下方法得到一此提示1、最首先应该尝试strings命令,比如拿到一个叫cr1的二进制文件,可以:  $stringscr1|more  里面可能会有一些对于这个cr1的描述,这些信息都是编译之后在程序中留下的一些文本性的说明,所以可能会告诉你这个文件是...

分析Linux文件rwx属性的含义

Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls-a除了显示一般文件名外,连隐藏文件也会显示出来。  ls-l(这个参数是字母L的小写,不是数字1)  这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls-l这个指令。例如我在某个目录下键入ls-l可能会...

LinuxC下获取UDP包中的路由目的IP地址和头标识目的地址

在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址。(一)主要的步骤:在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取structin_pktinfo(structin_pktinfo是structmsghdr中msg_control的成员)...

转 linux socket的select函数例子

使用select函数可以以非阻塞的方式和多个socket通信。程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序。1.程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数组。2.首先生成一个叫sock_fd的socket...