Linux
文章平均质量分 77
LeetCode8023
这个作者很懒,什么都没留下…
展开
-
Linux中常用的查询指令(which、whereis、find、locatae)
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:Which 查看可执行文件的位置。whereis 查看文件的位置。locate 配合数据库查看文件位置。Find 实际搜寻硬盘查询文件名称whichwhich命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which 命令,就可以看到某个系统命令原创 2016-05-29 17:23:06 · 1958 阅读 · 0 评论 -
socket编程之简单的TCP服务器
一、socket编程socket编程socket这个词可以表示很多概念: 在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket。在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成 的socketpair就唯一标识一个连接。socket本身有“插座”的意思,因此用来描述网络连接的一原创 2016-08-06 00:11:25 · 5535 阅读 · 0 评论 -
Linux信号
首先我们先来看看常用的信号都有那些说明:信号一共有62个,可能很多人都会像我一样被欺骗,实际上中间没有32,33信号。1-31好信号为普通信号,34-64为实时信号 接下里就让我们来了解一下信号的产生条件:1.用户在终端按下某些键时,终端驱动程序会发送信号给前台进程,例如Ctrl-C产生SIGINT信号,Ctrl-\产生SIGQUIT信号,Ctrl-Z产生SIG原创 2016-07-29 11:06:53 · 759 阅读 · 0 评论 -
可重入函数与线程安全
若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,可以再次进入并执行它(并行执行时,个别的执行结果,都符合设计时的预期)。可重入概念是在单线程操作系统的时代提出的。一个子程序的重入,可能由于自身原因,如执行了jmp或者call,类似于子程序的递归调用;或者由于硬件中断,UNIX系转载 2016-07-27 22:19:15 · 993 阅读 · 0 评论 -
Linux进程通信(四)IPC共享内存
一、什么是共享内存进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域,并返回相应的标识符。内核在保证shmget获得或创建一个共享内存区,初始化该共享内存区相应的shmid_kernel结构注同时,还将在特殊文件系统shm中,创建并打开一个同名文件原创 2016-07-25 15:54:43 · 785 阅读 · 0 评论 -
Linux进程通信(三)IPC信号
信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。 当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求,等于0,无资源可用,进程会进入睡眠状态直至资源可用。 当进程不再使用一个信号量控制原创 2016-07-25 11:58:11 · 911 阅读 · 0 评论 -
Linux进程通信(二)IPC消息队列
一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度MSGMNI来限制消息队列的原创 2016-07-24 12:36:10 · 1123 阅读 · 0 评论 -
操作系统中常见的进程调度算法
一、先来先服务(FCFS)和短作业(SJF)优先调度算法1.先来先服务(first-come first-sereved,FCFS)调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程原创 2016-06-05 16:53:39 · 1369 阅读 · 0 评论 -
Linux 程序运行栈帧
我们知道C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。栈帧也叫过程活动记录,是编译器用来实现函数调用的一种数据结构。那么在Linux下gcc编译器栈帧是怎么实现的呢?首先先来看一段程序:猜猜程序运行的结果是什么?你会发现你的系统会立马重启。这是为什么呢,这就是程序运行的堆栈在作怪!!下边这张图会让你很清楚的理解分析:原创 2016-06-26 12:47:47 · 856 阅读 · 0 评论 -
Linux进程管理之task_struct
大家都知道进程,可是知道linux是怎么管理其进程的吗?每一个进程都有一个进程描述符,具体是task_struct结构体存储相关的信息,在linux/sched.h文件里定义,那么我们先看看linux内核3.0版本的task_struct结构体的定义吧(删除了不必要的字段,只保留了重要的字段)。struct task_struct { //这个是进程的运行时状态,-1代表不原创 2016-06-07 19:24:32 · 417 阅读 · 0 评论 -
ctags 和Makefile的简单使用
ctagsctags是vim下方便代码阅读的工具。尽管ctags也可以支持其它编辑器,但是它正式支持的只有VIM。并且VIM中已经默认安装了Ctags,它可以帮助程序员很容易地浏览源代码。(尤其是大型的工程)一、安装ctags1、命令行安装切换到root用户之下,输入yum install ctags2、下载源码安装(网上提供的方法) 1)从http://ctags.sourcefor原创 2016-05-29 17:23:12 · 1271 阅读 · 0 评论 -
如何将你的vim配置的“高大上”
vim对于一个经常在linux进行编程的程序员,将vim 配置的高大上是一个程序员的基本素养。接下来就来给大家介绍一下如何简单的配置vim首先来上一张效果图650) this.width=650;" src="http://s4.51cto.com/wyfs02/M01/82/0C/wKioL1dJQDKwmT5_AADE1nIaqjo231.png" title="QQ截图20160528144原创 2016-05-29 17:23:09 · 925 阅读 · 0 评论 -
select、poll、epoll的区别
I/O多路转接之select 系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应的FILE *结构原创 2016-08-09 23:09:12 · 1120 阅读 · 0 评论