linux

linux下C++修改文件内容

 Cfwrite在任意位置写入文件,并可修改文件内容 想实现类似迅雷那样下载时可以从文件半中间写入的功能1#include<stdio.h>2intmain()3{4FILE*fp;5fp=fopen("overwrite.bin","rb+");//使用rb+模式,可以往半中间插入数据...

Linux(C/C++)下的文件操作open、fopen与freopen

open是linux下的底层系统调用函数,fopen与freopenc/c++下的标准I/O库函数,带输入/输出缓冲。linxu下的fopen是open的封装函数,fopen最终还是要调用底层的系统调用open。所以在linux下如果需要对设备进行明确的控制,那最好使用底层系统调用(open),open对应的文件操作有...

【Linux C 多线程编程】互斥锁与条件变量

一、互斥锁 互斥量从本质上说就是一把锁,提供对共享资源的保护访问。  1)初始化:  在Linux下,线程的互斥量数据类型是pthread_mutex_t.在使用前,要对它进行初始化:  对于静态分配的互斥量,可以把它设置为PTHREAD_MUTEX_INITIALIZER,或者调用pthread_mutex...

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的描述,这些信息都是编译之后在程序中留下的一些文本性的说明,所以可能会告诉你这个文件是...