
linux
shangtang
这个作者很懒,什么都没留下…
展开
-
Linux下的内部命令与外部命令的区别
Linux命令有内部命令(内建命令)和外部命令之分,内部命令和外部命令功能基本相同,但也有些细微差别。内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shel...原创 2018-03-26 19:37:13 · 6893 阅读 · 0 评论 -
Linux的进程相关命令
1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序。 ps -A 显示所有程序。 ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 ps -e 此参数的效果和指定”A”参数相同。 ps e 列出程序时,显示每个程序所使用的环境变量。 ps f 用ASCII字符显示树状结构,表达程原创 2017-11-24 15:34:32 · 202 阅读 · 0 评论 -
Linux进程通信之信号
一、什么是信号用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中的进程捕获到这个信号然后作出一定的操作并最终被终止。信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产生的。但它们转载 2017-12-04 12:34:15 · 252 阅读 · 0 评论 -
fork之后子进程到底复制了父进程什么
[cpp] view plain copyprint?#include #include #include #include void main() { char str[6]="hello"; pid_t pid=fork(); if(pid==0) { str[0]='b';转载 2017-12-02 20:42:15 · 449 阅读 · 0 评论 -
Linux进程地址空间 && 进程内存布局
一 进程空间分布概述 对于一个进程,其空间分布如下图所示: 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码。初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据。未初始化过的数据(BSS):在程序运行转载 2017-12-02 18:22:09 · 235 阅读 · 0 评论 -
网络编程和套接字
网络编程其实和我们计算机上的文件读取操作很类似,通俗地讲,网络编程就是编写程序使两台联网的计算机相互交换数据。那么,数据具体怎么传输呢?其实操作系统会提供名为“套接字”的部件,套接字就是网络数据传输用的软件设备而已。即使你对网络数据传输原理不太熟悉,你也可以通过套接字完成数据传输。因此,网络编程常常又称为套接字编程。下面我们再通过一个通俗地例子来理解什么是套接字并给出创建它的过程。实际上,原创 2017-11-29 22:35:13 · 317 阅读 · 0 评论 -
网络编程是什么
网络编程是什么? 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据。 现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。 在网络编程中,发起连接程序,也就是发送第一次请求的程序转载 2017-11-29 22:25:56 · 363 阅读 · 0 评论 -
进程间通信方式
linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进原创 2017-11-29 22:23:10 · 160 阅读 · 0 评论 -
带缓存的I/O和不带缓存的I/O的区别
《APUE》的第三章为“不带缓存的I/O”,第五章为“带缓存的I/O”。 首先,我们需要明确一点,上面两个是“术语”,不是“述语”(描述性质的语言)。 其实“不带缓存的I/O”实际上也是带缓存的,只不过此缓存非比缓存,这里的“不带缓存”指的是“不带流缓存”,而这也就是和“带缓存的I/O”的区别了。 下面让我详细解释下:转载 2017-11-29 17:52:37 · 464 阅读 · 0 评论 -
Linux进程间通信——使用共享内存
下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一转载 2017-12-04 15:12:29 · 165 阅读 · 0 评论 -
Linux进程间通信——使用信号量
这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码转载 2017-12-04 15:15:26 · 157 阅读 · 0 评论 -
Linux进程间通信——使用消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消转载 2017-12-04 15:18:20 · 200 阅读 · 0 评论 -
Linux网络编程之UDP
一、概述 UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的运输层协议,在网络中用于处理数据包,是一种无连接的协议。UDP 不提供可靠性的传输,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。二.U原创 2017-12-06 15:55:31 · 223 阅读 · 0 评论 -
Linux网络编程之TCP编程
一.概述 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。二.TCP 具有以下特点 1.电话系统服务模式的抽象 2.每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程 3.可靠、出错重传、且每收到一个数据都要给出相应的确认,保证数据传输的可靠性。三.TCP 客户端编程 对于 TCP 客户端编原创 2017-12-06 15:44:19 · 248 阅读 · 0 评论 -
Linux的内核相关问题
1、简述Linux进程内存空间分为哪几个段?作用分别是什么?主要分为以下5部分:Text:存放可执行的指令操作,其只读不能写;Bss:存放未初始化的全局变量和静态变量;Data:存放初始化的全局变量和静态变量;Stack:存放临时变量,函数参数等;Heap:存放New/Malloc等动态申请的变量,用户必须手动进行Delete/Free操作;其中,Stack和Hea原创 2017-12-05 17:15:01 · 257 阅读 · 0 评论 -
Linux的线程间通信方式总结
Linux系统中的线程间通信方式主要以下几种:* 锁机制:包括互斥锁、条件变量、读写锁和自旋锁。 互斥锁确保同一时间只能有一个线程访问共享资源。当锁被占用时试图对其加锁的线程都进入阻塞状态(释放CPU资源使其由运行状态进入等待状态)。当锁释放时哪个等待线程能获得该锁取决于内核的调度。 读写锁当以写模式加锁而处于写状态时任何试图加锁的线程(不论是读或写)都阻塞原创 2017-12-05 16:06:33 · 7182 阅读 · 0 评论 -
Linux进程间通信方式总结
Linux系统中的进程间通信方式主要以下几种:同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Shared Memory)网络主机间的进程通信方式原创 2017-12-05 16:05:27 · 330 阅读 · 0 评论 -
Linux中文件描述符与索引节点的区别
一般来讲,使用与管理文件是通过文件名来进行的,但从应用编程的角度看,文件描述符更有用,而系统中的文件在本质上是通过其索引节点进行管理的。 文件描述符是应用程序中表示被打开的文件的一个整数,其他对文件的操作接口都要使用这个整数来指定所操作的文件。 从系统的角度来看,文件的索引节点(inode)是文件的唯一标识。一个文件的inode包含文件系统处理文件所需要的全部信息,如访问权限、当前原创 2017-11-24 22:23:38 · 953 阅读 · 0 评论 -
Linux进程间通信——使用匿名管道
在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。一、什么是管道如果你使用过Linux的命令,那么对于管道这个名词你一定不会感觉到陌生,因为我们通常通过符号“|"来使用管道,但是管理的真正定义是什么呢?管道是一个进程连接数据流到另一个进程的通转载 2017-12-04 15:21:40 · 239 阅读 · 0 评论 -
Linux进程间通信——使用命名管道
在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来解决不相关进程间的通信问题。一、什么是命名管道命名管道也被称为FIFO文件,它是一种特殊类型的文件,它在文件系转载 2017-12-04 15:19:59 · 212 阅读 · 0 评论 -
在程序开始运行时,系统自动打开3个标准文件:标准输入、标准输出、标准出错输出
在Linux中,所有对设备和文件的操作都使用文件描述符来进行。 Linux中一个进程启动时,都会打开3个文件:标准输入、标准输出和标准出错处理。这三个文件分别对应文件描述符0、1、2。 在C语言中,在程序开始运行时,系统自动打开3个标准文件:标准输入、标准输出、标准出错输出。通常这3个文件都与终端相联系。因此,以前我们所用到的从终端输入或输出都不需要打开终端文件。系统自定义了3个文件指转载 2017-11-29 17:33:38 · 1874 阅读 · 0 评论 -
文件描述符与流的区别
任何一种操作系统中,程序在开始读写一个文件的内容之前,必须首先在程序与文件之间建立连接或通信通道,这一过程称为打开文件。打开一个文件的目的可以是为了读或者为了写,也可以是即读又写。 UNIX系统中有两种机制用于描述程序与文件的这种连接: (1)文件描述符 (2)流文件描述符 和 流 相同点:1. 都是用来表示用户程序与被操作的文件之间的连接,并在此连接的原创 2017-11-29 14:30:30 · 1592 阅读 · 0 评论 -
Linux之运算符与表达式
一些容易出错的优先级的问题 优先级问题 表达式 经常误认为的结果 实际结果 .的优先级高于*,->操作符可以用于解决这个问题 *p.f引用操作 p所指对象的字段f(*p).f 对p取f偏移,作为指针,然后进行接触 [ ]高于* int*ap[ ] ap是个指向int数组的指针int(*ap)[ ] ap 是个元素为int指针的数组int*(ap[])原创 2017-10-10 17:01:42 · 440 阅读 · 0 评论 -
关于索引节点inode的相关知识
一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八原创 2017-09-27 15:54:41 · 475 阅读 · 0 评论 -
linux平台下的C编程
Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性。而近年来,Linux操作系统在嵌入式系统领域的延伸也可谓是如日中天,许多版本的嵌入式Linux系统被开发出来,如ucLinux、RTLinux、ARM-Linux等等。在嵌入式操作系统方面,Linux的地位是不容怀疑的,它开源、它包含TCP/IP协议栈、它易集成GUI。转载 2017-03-29 21:03:08 · 387 阅读 · 0 评论 -
Linux的gcc的使用
在为 Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下 最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可原创 2017-04-06 22:05:01 · 329 阅读 · 0 评论 -
对Linux的初步了解
这是我写的关于Linux的第一篇博客,主要来阐述一下关于对他的初步了解。主要有以下的几个方面的的问题。 1.Linux与Unix的关系? 2.Linux如何发展壮大? 3.什么是GNU计划? 4.什么是GPL协议? 5.Posix标准是什么? 首先是关于第一个问题 ,Linux操作系统是UNIX操作系统的一种克隆系统,借助于Internet网络,并通过全世界各地计算机爱好者的原创 2017-03-05 10:15:21 · 259 阅读 · 0 评论 -
Linux的目录结构
当在使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc、usr、var、bin ... ... 等目录,而在这些目录中,我们进去看看,发现也有很多的目录或文件。文件系统在Linux下看上去就象树形结构,所以我们可以把文件系统的结构形象的称为 树形结构。文件系统的是用来组织和排列文件存取的,所以她是可见的,在Linux中,我们可以通过ls等工具来查看其结构转载 2017-05-29 09:27:50 · 256 阅读 · 0 评论 -
Linux文件系统以及目录结构简介
分类:Linux(1) 作者同类文章XLinux文件系统以及目录结构简介Linux和Windows操作系统中的文件系统些不同,在学习使用Linux之前,能够了解这个不同之处助于后续的学习。本文先对Windows和Linux上面文件系统的一些概念进行区分,然后介绍一些Linux文件系统相关的原理,最后较为详细地介绍了Linu转载 2017-05-29 10:57:37 · 418 阅读 · 0 评论 -
linux shell编程实例总结
1.查找当前目录中所有大于500M的文件,把这些文件名写到一个文本文件中,并统计其个数。find ./ -size +500M -type f | tee file_list | wc -l2.在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。for filename in `find /tmp -type f -name "abc*"|head转载 2017-05-29 18:03:58 · 770 阅读 · 0 评论 -
Linux 之语句
空语句的用途纯粹消耗CPU的时间,起到延时的作用;为了程序的结构清晰,可读性好,以后为了方便扩充心得功能。不可将浮点变量用“==”或“!=”与任何数字比较。对 if 语句的补充 有时我们会遇到if(NULL == p)这样的形式,这不是程序写错了,是程序员有意为之,是为了防止将if(p == NULL),误写成if(p == NULL)因为编译器认为if(p == NULL)是合法的,而原创 2017-10-10 17:32:11 · 267 阅读 · 0 评论 -
Linux之系统命令
login 1.作用 login的作用是登录系统,它的使用权限是所有用户。 2.格式 login [name][-p ][-h 主机名称] 3.主要参数 -p:通知login保持现在的环境参数。 -h:用来向远程登录的之间传输用户名。 如果选择用命令行模式登录Linux的话,那么看到的第一个Linux命令就是login:。 一般界面是这样的: Manddrake Linux re原创 2017-03-15 15:41:07 · 256 阅读 · 0 评论 -
LinuxGDB的常用命令
Linux GDB 常用命令如下:1.启动和退出gdb(1)启动:gdb ***:显示一段版权说明; (*** 表示可执行程序名)(2)退出:quit。有的时候输入quit后会出现相关提示:类似于“(y/n)”,输入y2.显示和查找程序源代码(1)list :显示10行代码,但是我为什么没有显示成功呢?(2)list 5,10:显示源文件第五行到第十行的代码(3)l原创 2017-04-19 21:08:53 · 303 阅读 · 0 评论 -
linux环境变量 export命令详解
由host $ export DVSDK="${HOME}/ti-dvsdk_dm368-evm_xx_xx_xx_xx"引发的问题1、${HOME}:首先, HOME 是个变量,它代表你的 home 目录,变量前必须加上 $ 符号,否则会报错usr/local/dvsdk为dvsdk的destination folder 由#echo $DVSDK测试环境变量添加成功否转载 2017-10-14 23:01:32 · 449 阅读 · 0 评论 -
Linux之数据类型
变量名与变量值 char *str = “hello world”; printf(“%s\n”, str); *str = “goodbye world”; printf(“%s\n”, str); 此代码的第三行出错;基本内置类型 void类型 用保留字void表示的数据类型有两种相反的意思,可以表示没有数据(没有结果,没有形式参数),也可以表示某种任原创 2017-10-09 23:00:28 · 1357 阅读 · 0 评论 -
Linux之shell脚本
什么是shell1.Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。2.每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。 同Linux本身一样,Shell也有多种不同的版本(比如bash或sh)。3.实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核原创 2017-10-14 13:25:16 · 1054 阅读 · 0 评论 -
Linux的make与makefile的基础知识
1.了解make工程管理器 所谓工程管理器是指管理工程的工具。假如我们面对是一个上百个文件的代码构成的项目,假如其中几个文件进行了修改,按照之前所学的gcc编译工具,就不得不把项目内所有的文件重新编译一遍,因为编译器并不知道哪些文件是最近更新的,但那些没有改动的源代码根本不需要重新编译,而只须把它们重新链接进去即可。所以,人们就希望有这样一款能够自动识别更新的文件代码并管理项目的软件,所以make原创 2017-04-26 22:18:41 · 339 阅读 · 0 评论 -
关于gdb的使用
在linux下做东西,gcc,gdb是避不开的,刚开始使用比较麻烦,永久了感觉还是挺好用的。redhat里面自带一个gdb的图形前端kdbg,升级到高一点的版本还是挺好用的。还有一个xxgdb,没用过,不知道怎么样。一、初始化 输入gdb进入gdb调试环境。或者直接输入gdb + progfile来加载文件。注意该文件是使用gcc(或g++)编译得到的。为了使 gdb 正常工转载 2017-10-13 16:08:47 · 290 阅读 · 0 评论 -
Linux的gcc命令
GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Co原创 2017-04-19 21:12:04 · 322 阅读 · 0 评论 -
Linux的系统管理与安全命令
系统管理命令df 1.作用: 检查文件系统磁盘占用情况 2.格式: df [options] -s:对每个names参数只给出占用的数据块总数 -a: 递归显示指定目录中各文件及子目录中各文件占用的数据块数, 若既不指定-s ,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数 -k: 以1024字节为单位列出磁盘空间使用情况 -x: 跳过在不同文原创 2017-10-12 09:29:56 · 389 阅读 · 0 评论