linux
findgeneralgirl
这个作者很懒,什么都没留下…
展开
-
linux下的文件操作命令
首先,大家明白一个概念,非常重要的一个概念“在linux上,一切皆文件”,“在linux上,一切皆文件”,“在linux上,一切皆文件”,重要的事情说三遍。。。明白了文件的重要性,那么,文件都有哪些类型的呢?好比人有白人,黄人,黑人之分,文件有普通文件,目录文件,管道文件,设备文件,链接文件这五种。今天,就从最简单也是最基础的普通文件和目录文件说起。普通文件:只要不是其他四种文件,就是原创 2017-07-28 20:26:50 · 3614 阅读 · 0 评论 -
linux中进程控制-执行程序
linux环境下使用exec函数 linux环境下使用exec函数执行一个新程序,该函数在文件系统中搜索指定路径的文件,并将该文件内容复制到调用exec的地址空间,取代原进程的内容,如下图。exec函数的原型如下:#include<unistd.h>int execl(const char* pathname,const char *arg0,...);int execle(const ch原创 2017-10-16 22:55:11 · 626 阅读 · 0 评论 -
函数/代码安全、malloc的低层实现
一般说到代码安全时,一般会涉及这几个方面: 一、函数中的指针操作出现下面几种情况: 1.指针访问无效的内存 2指针所指资源没释放,导致内存空间越占越大。 3.指针已释放资源,又去访问。 二、函数在结束的时候,返回局部变量的地址或引用。 三、代码的线程安全。如何知道代码或函数是线程安全的?在函数运行的过程中,可能同一个会导致两个或两个以上的线程来访问变量,那么,如果在时间上出现你先取,原创 2017-11-01 22:52:36 · 497 阅读 · 0 评论 -
linux下的文件及目录管理
进入文件命令模式后的操作命令删除一行:dd 删除多行:n+dd(n为行数) 删除同一行几个字:shift+c 删除当前光标以后的内容并进入插入模式 拷贝一行:p 拷贝多行:n+pp(n为行数) 粘贴:p 剪切:dp 撤销:u 光标移动到行尾:shift+4 光标移动到行头:shift+6 光标移动到文件为:shift+g 光标移动到n行:n+shirt+g 光标移动昂到第原创 2017-09-21 11:21:43 · 284 阅读 · 0 评论 -
linux 进程控制
进程标识符 进程ID,类似每个人的身份证号码。根据进程ID,用户可以精确地定位一个进程。 进程标识符的类型pit_t,本质是一个无符号整型。 进程标识符与进程是一对一的关系,进程标识符和程序是多对一的关系。 进程标识符1——–>进程1———>程序1 进程标识符2——–>进程2———>程序1 同一个程序文件可以加载多次成为不同的进程。进程中重要的ID值 每个进程都有6个重要的ID值,分原创 2017-10-06 16:49:27 · 189 阅读 · 0 评论 -
进程间通信-管道(有名管道和无名管道)
1.进程间通信(IPC)的方式有: 使用文件系统实现无哦进程共享文件数据、父子进程共享数据段、管道、共享内存、信号量、套接字等等2.单双工介绍: 单工:数据只能从固定的方向传播,比如广播。 半双工:数据可以双向传播,但同一个时刻只能是一个方向传播。 全双工:同一时刻可以双向传播。3.有名管道的介绍: 命令:mkfifo name 管道文件和普通文件区别:普通文件的内容存储原创 2017-10-19 17:25:12 · 712 阅读 · 1 评论 -
内联函数
内联函数:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置(比如说下面的实例程序,在main函数中,调用到foo这个函数时,会将代码展开为a+b插入到主函数中)。这样做的好处是省去了调用的过程,加快程序运行速度。int foo(int a,int b){ return a+b;}在正常的编译过程中,调用到一个函数时,需要将其调用的参数原创 2017-10-19 15:59:20 · 379 阅读 · 0 评论 -
程序的编译链接过程
平常在编程完之后,点击生成解决方案,然后运行,就会得到我们需要的结果,这个结果是怎么来的,在这个过程,会发生错误,错误又分为几类错误呢?它们分别发生在编译连接的哪个阶段?是什么问题造成的呢? 在这个过程中,能看到现象却看不到本质,面对各种问题,让我们无所适从,现在就先对编译链接过程进行一个简单的剖析。#include<stdio.h>int main(){ printf("hello w原创 2017-10-18 18:00:28 · 661 阅读 · 0 评论 -
内存
程序与内存的关系,不可分割,内存是承载程序运行的介质,也是程序进行各种运算和表达的场所,了解内存的状况,对于理解程序有着非常重要的作用 下图为一个linux下一个进程里典型的内存布局。 一个程序的内存空间,和其系统的位数有关,一般32为系统,其内存大小为4GB,(2的32次方)。但是对于4GB的内存空间,windows系统会默认将高地址的2GB空间分配给内核,linu原创 2017-10-17 17:24:23 · 238 阅读 · 0 评论 -
Linux-进程环境(shell环境)
命令行参数: 对于c语言来说,程序的执行是从main函数开始的,原型如下:int main(int argc, char* agrgv[])argc:命令行参数的个数 argv:是这项参数的各个指针所构成的数组,其每个元素是一个字符串,以”\0”结尾,代表一个命令行参数。 argv[0]:代表了该程序的路径名加文件名 argv[argc]:是一个NULL指针补充函数:char* ri原创 2017-09-30 18:07:14 · 248 阅读 · 0 评论 -
linux--环境变量(linux进程内存管理)
数据的内部存储: 大端:低地址存高位数 小端:高地址存高位数 代码段: 一个程序多数情况下是不需要更改自身代码的,只有一种情况例外,就是一些长时间运行的升级程序。(另一种解决方案为采用共享库的形式)。 数据段: 包含程序中明确给定初值的全局变量和静态变量。 缓冲段: 通常是没有明确给定初值的全局变量和静态变量。 栈: 所有的自动变量和函数调用时所需要保存的信息(返回地址,函数调用原创 2017-09-28 16:17:53 · 391 阅读 · 0 评论 -
linux进程--进程环境(程序的启动与退出)
加载程序流程: 1.读取头部信息,确定需要的地址信息。 2.分配地址空间。 3.将程序读入地址空间的段中。 4.如果需要,创建一个堆栈段。 5.设置其他信息,例如环境变量。 6.执行程序。总结:加载器每次讲程序加载前需要分配地址空间,所以每次程序加载时不会使用同样的地址。退出程序 1.自愿退出 C语言中常用到的return和exit命令。在程序退出时,操作系统需要回收进程所分配的资源原创 2017-09-28 11:05:20 · 600 阅读 · 0 评论 -
linux进程间通信-信号量
引入信号量之前,先介绍几个概念:1.临界资源:同一时刻只允许一个进程或线程访问的资源。(有时候是有限个进程或线程访问),就比如一支笔一次只能是一个人使用。 这里的临界资源在c语言或c++中的表现就是从代码段开始,一直到堆区的这一部分,我们将其称之为临界资源,对于每一个进程,都有各自独立的栈,所以进程之间栈不是共享的,除了栈以外的代码段,数据段,只读数据段,堆区这几个内存结构可以说是一个程序中不同进原创 2017-10-25 22:26:55 · 199 阅读 · 0 评论