开发环境选择 vim,vscode,qt,visual studio都可以做linux c++开发,但是作为windows程序员,最熟悉的还是visual stuio,加上visual studio 2019 支持cmake及linu开发,所以最终选择了visual studio 2019 + cmake作为开发环境.同时使用虚拟机中的ubuntu作为编译机. 学习cmake基本用法 学习设置包含路径; 学习设置库搜索路径; 学习设置动态库静态库的导入; 选择boost作为基础库 有许多常用算法…
http://advancedlinuxprogramming.com提供了本书电子版的免费下载. 1 与执行环境交互 关于参数 C语言程序的main()函数使用两个参数和执行环境交互--(int)argc和(char*)argv[].前者表示所执行命令的参数个数,后者包含了所执行命令的各个参数.(char*)argv[]的第一个元素为程序本身的位置,其后为程序的参数. 看例子: #include <stdio.h> int main(int argc, char* argv[]) { pri…
本节中,我们继续讲解,在linux2.4内核下,如果通过一些列函数从路径名找到目标节点. 3.3.1)接下来查看chached_lookup()的代码(namei.c) [path_walk()>> cached_lookup()] /* *Internal lookup() using the new generic dcache. *SMP-safe *给定name和parent进行查找,如果找到而且合法,那么返回找到的dentry:否则,返回NULL */ staticstruct de…
在计算机设计之初,对内存中数据的处理也有不同的方式,(低位数据存储在低位地址处或者高位数据存储在低位地址处),然而,在通信的过程中(ISO/OSI模型和TCP/IP四层模型中),数据被一步步封装(然后加入信息首部),当传到目的段时,被一步步解封,然后获取数据.从上面我们可以看出,数据在传输的过程中,一定有一个标准化的过程,也就是说:从主机a到主机b进行通信,a的固有数据存储-------标准化--------转化成b的固有格式如上而言:a或者b的固有数据存储格式就是自己的主机字节序,上面的标准化…
为什么要写这篇文章 1.      因为最近在学习<软件调试>这本书,看到书中的某个调试历程中讲了Windows的系统调用的实现机制,其中讲到了从Ring3跳转到Ring0之后直接进入了KiFastCallEntry这个函数. 2.      碰巧前天又在网上看到了一篇老文章介绍xxx安全卫士对Windows系统调用的Hook,主要就是Hook到这个函数 3.      刚刚做完毕业设计,对使用中断来实现系统调用的方式记忆犹新. 以上原因导致我最近眼前总是出现系统调用这个词,脑海中总是出现系统…
Delphi中使用@取函数地址的问题   例如以下代码:unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs;type  TForm1 = class(TForm)    procedure one();    function two(x,y:integer):integer;  private    { Private declar…
先说一段废话,幸亏我汇编基础(基础 基础 基础)扎实,否则这个问题真的恶心到我了正题  因为有特殊需求, 需要写一个类似于接口的功能,但是因为用到的次数不多再加上C++写接口各种麻烦所以想通过函数的地址调用该函数,并且能正常的传递参数.但调用过程和被调函数是不在一个类的,调用起来又是各种麻烦这几天我翻烂了百度, 都没找到方法,什么函数回调啊,通过函数地址调用函数啊,还有什么接口之类的天......最后想起来我之前用过的易语言里有人写过这个功能,打算拷贝过来,但是也有不足(稍后会说),先上翻译成C…
转自:http://blog.csdn.net/jasonchen_gbd/article/details/45585133 版权声明:本文为博主原创文章,转载请附上原博链接.   目录(?)[-] 简介 相关基本知识 关键寄存器介绍 内核中的函数栈 dump_stack函数   简介 当内核出现比较严重的错误时,例如发生Oops错误或者内核认为系统运行状态异常,内核就会打印出当前进程的栈回溯信息,其中包含当前执行代码的位置以及相邻的指令.产生错误的原因.关键寄存器的值以及函数调用关系等信息,这…
1. 查看函数地址     看函数在代码的哪一行,使用info line就可以看到类似下面这中输出 点击(此处)折叠或打开 (gdb) info line a.cpp:10 Line 10 of "a.cpp" starts at address 0x80487d4 <_ZN1B5test2Ev> and ends at 0x80487d7 <_ZN1B5test2Ev+3>. (gdb) p _ZN1B5test2Ev $1 = {void (B * cons…
截止导Python 3.6 目前内置函数有68个 以下是对这些内置函数的分类 一:作用域相关 以字典的形式返回作用域中的名字 locals # 返回本地作用域的所有名字 globals # 返回全局作用域的所有名字 二: 迭代器相关 range()   生成器 iter()    获取迭代器,内部实际上使用了__iter__()获得迭代器 一样的 list = [1,2,3,4,5] l1 = list.__iter__() l2 = iter(list) print(l1) print(l2)…