linux
文章平均质量分 69
zy20150613
这个作者很懒,什么都没留下…
展开
-
LINUX下的find命令
我们常说linux下皆文件,这在强调Linux下文件操作的重要性的同时,也向我们暗示了linux一个操作系统的组成是由无数个文件构成的。在这些操作系统中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至原创 2017-04-10 14:45:42 · 2753 阅读 · 0 评论 -
linux中vim配置大全
vim是linux最常用的一种编辑器,但是需要配置其一些特性,更方便的为我们编程服务。set nocompatible "不要使用vi的键盘模式,而是vim自己的set syntax=on " 语法高亮set noeb or noerrorbells "关闭错误信息响铃setconfirm " 在处理未保存或只读文件的时候,弹出确认setautoindent 自动缩进...原创 2018-04-04 20:34:47 · 1582 阅读 · 1 评论 -
常见的编译器
现在我们用的开发工具,多是集成好的,即IDE。常见的IDE有Microsoft Visual Studio,Dev-C++,C++Builder,Emacs + GCC,Eclipse+CDT。IDE环境,集编辑、编译、调试于一身,还有很多相应的拓展工具,这是为了开发人员使用上能够很方便,以至于他们把更多的精力放在项目本身的技术实现上。可是对于一个入门的开发人员,一下子就面对那么复杂的IDE,有时...原创 2018-04-04 20:37:09 · 1655 阅读 · 0 评论 -
调试时在编译选项中添加-g以及readelf命令的用法
用gdb进行调试纠错前必须要在编译选项中添加“-g”,“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。readelf命令用来显示一个...原创 2018-04-04 20:48:38 · 921 阅读 · 0 评论 -
linux下实现一个彩色进度条
一、简介我们在Linux下安装文件都会有一个进度条来提示我们安装的进度,它里面会动态增长的一个图像表示进度,同时还有百分数表示安装百分比等等信息。 实现一个进度条我们首先需要知道如下的知识我们才能完全的写出这个小程序。二、缓冲区一般C库函数写入文件是全缓冲方式,而写入显示器是行缓冲方式,printf、fwrite库函数会自带缓冲区,而我们只要达到了一种缓冲方式我们就可以刷新缓冲区,一般情况下我们有...原创 2018-04-06 09:07:49 · 221 阅读 · 0 评论 -
linux下rpm和yum的介绍及区别
1 Linux软件安装概述安装程序的方式:通用二进制格式:直接解压压缩文件,就可以使用。但一定要注意安装平台。软件包管理器:如RPM。软件包管理器的前端工具:如YUM。源代码编译。1.1 软件包概述软件包的组成部分:二进制程序,位于 /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin 等目录中。库文件,位于 /lib,...原创 2018-04-06 09:10:50 · 327 阅读 · 0 评论 -
linux下消息队列详解
消息队列提供了从一个进程向另外一个进程发送一块数据的方法,每个数据块认为有一个类型(通俗说法是一个通道),但是接受通道与发送通道必须一致才能实现通信。消息队列的不足之处在于每个消息最大长度有限度,每个消息队列总字节数有限制,系统的消息队列有限制。命令:cat /proc/sys/kernel/msgmax :查看一条信息最大有多大cat /proc/sys/kernel/msgmnb原创 2018-04-23 19:45:04 · 1918 阅读 · 0 评论 -
linux下命名管道详解
1. 命名管道创建命名管道创建方式:函数:mkfifo(“my.p”,0644)命令:mkfifo my.p命名管道作用:在内核中建一块缓冲区,并命名,使得2个没有亲缘关系的进程能够实现通信,通过open这块缓冲区往里面写东西,读东西。一旦这2个进程能够找到了这块共有的缓冲区,可以删除my.p这个文件,删除之后并不影响2个进程的通信。需要注意的是:当只有进程往这块缓存写东西时(原创 2018-04-23 19:46:30 · 867 阅读 · 0 评论 -
多个客户端与服务器端发送消息案例
案例:用消息队列实现许多客户端和服务器端的通信,要求是,许多客户端都可以向服务器端发送消息,服务器端在接受这些消息之后,再将消息回发给对应的客户端。解决思路:所有客户端都往1号通道上发送消息,并且在发送的内容的最前面放上自己进程的进程号,那么当服务器端收到中众多客户端发来的消息之后,通过解析主要内容的最前面内容,拿出对应客户端进程号,将其作为发送通道发送给对应的客户端,那么客户端接受的消息就来自以...原创 2018-04-23 19:48:30 · 1637 阅读 · 0 评论 -
共享内存的实现详解
共享内存:共享内存是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。共享内存示意图:共享内存数据结构:struct shmid_ds { struct ipc_perm shm_perm; /* Ownership and permissions */...原创 2018-04-26 10:43:48 · 12437 阅读 · 0 评论 -
共享内存与信号量集结合使用的案例
前面说了共享内存有一些缺陷,无法达到进程同步的效果,然而将共享内存和信号量集结合使用,再加上锁的概念,就可以达到同步的结果。具体实现如下:头文件:shmfifo.h#ifndef __SHMFIFO_H__#define __SHMFIFO_H__typedef struct shm_head{ int rd_idx; // 读位置 int wr_idx; // 写位置 int b...原创 2018-04-27 13:41:05 · 771 阅读 · 0 评论 -
乐观锁与悲观锁
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过原创 2018-05-06 11:32:42 · 123 阅读 · 0 评论 -
常见C++面试题及基本知识点总结(二)
8.tcp为什么要三次握手,tcp为什么可靠。为什么不能两次握手:(防止已失效的连接请求又传送到服务器端,因而产生错误)假设改为两次握手,client端发送的一个连接请求在服务器滞留了,这个连接请求是无效的,client已经是closed的状态了,而服务器认为client想要建立一个新的连接,于是向client发送确认报文段,而client端是closed状态,无论收到什么报文都会丢弃...原创 2019-02-27 10:28:25 · 292 阅读 · 0 评论 -
常见C++笔试面试总结(四)
11. 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。答案:/*编写strcpy函数(10分)已知strcpy函数的原型是char *strcpy(char *strDest, const c...原创 2019-02-27 10:36:39 · 151 阅读 · 0 评论 -
常见C++笔试面试题总结(五)
21. New delete 与mallocfree 的联系与区别?答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.(可以看看:显式调用构造函数和析构函数)22. #define DOUBLE(x)...原创 2019-02-27 10:40:04 · 310 阅读 · 0 评论 -
常见C++面试题总结(六)
常见的str函数:strtok extern char *strtok( char *s, const char *delim ); 功能:分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串。 说明:strtok()用来将字符串分割成一个个片段。当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为 \0 字符。在第一次调用时,s...原创 2019-02-27 10:45:27 · 303 阅读 · 0 评论 -
linux常用编辑器及其介绍
1 、VimVim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。2 、EclipseEclipse是一款很酷的开源代码编辑器,同时它也是最受程序员亲睐的代码编辑器之一,它拥有代码高亮和智能提示等强大的功能。在Eclipse中,你可以完全胜任以下编程语言的工作——Python, R,...原创 2018-04-04 20:30:07 · 186 阅读 · 0 评论 -
linux下静态库以及动态库的使用过程
在linux下经常会将一些.o文件打包成一个库,分为静态库和动态库。静态库主要是任何一个程序需要这个库, 就会将这个静态库的内容拷贝一份到程序中,进行执行。但是这样会出现一个问题, 当很多程序都要用这一个库的时候, 这个库就会被拷贝多份,然后造成代码冗余,占用内存空间, 这时就出现了动态库, 动态库只在系统中保存一份,哪一个程序使用它就去拿一份,不进行拷贝,这样大大节省了内存空间消耗。举一个例子进...原创 2018-04-15 11:06:51 · 158 阅读 · 0 评论 -
linux下的task struct结构体分析
进程是处于执行期的程序以及它所管理的资源(如打开的文件、挂起的信号、进程状态、地址空间等等)的总称。注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源。 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。它定义在linux-2.6.38.8/include/linux/原创 2017-04-13 11:19:00 · 671 阅读 · 1 评论 -
文件描述符(fd)和FILE结构体的关系
文件描述符(fd)文件描述符(file descriptor)用来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。通常情况下,将一个程序从硬盘加载到内存后,这个程序就化身为了一个进程,这时系统会默认打开三个文件: 标准输入(stdin)、标准输出(stdout)、标准错误(stderr)。原创 2017-05-14 12:10:09 · 707 阅读 · 0 评论 -
atexit函数调用注册函数的顺序
首先我们先在Linux环境下验证一下atexit函数调用注册函数的顺序:首先先写了4个fun函数,并且4个fun函数和main函数各自打印一句话,通过屏幕上的输出显示验证调用顺序:(1)fun函数及main函数(2)makefile文件(3)运行结果过程分析:atexit函数先注册4个fun函数然后等待3秒,再打印"hello main"(如果mai原创 2017-04-25 16:10:35 · 563 阅读 · 0 评论 -
孤儿进程和僵尸进程的模拟实现
僵尸进程(Zombies):(1)僵尸进程是一个比较特殊的状态,当进程退出父进程(使用wait()系统调用)没有没有读取到子进程退出的返回代码时就会产生僵尸进程。僵尸进程会在以终止状态保持在进程表中,并且会一直等待父进程读取退出状态代码。(2)一个进程在其父进程没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。如果其父进程还存在而一直不调用wait(),原创 2017-04-26 09:33:16 · 340 阅读 · 0 评论 -
linux每天一个命令:du命令
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的.1.命令格式:du [选项][文件]2.命令功能:显示每个文件和目录的磁盘使用空间。3.命令参数:-a或-all 显示目录中个别文件的大小。 -b或-bytes 显示目录或文件大小时,以byte为单位。 -c或转载 2017-12-11 10:28:02 · 361 阅读 · 1 评论 -
linux每天一个命令:df命令
linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。1.命令格式:df [选项] [文件]2.命令功能:显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_COR原创 2017-12-19 15:37:26 · 351 阅读 · 0 评论 -
linux常用命令的总结
了解以下重要命令. du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password1, du命令du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。语法:du [选项][命令]选项:-a或-all原创 2018-03-23 15:35:12 · 170 阅读 · 0 评论 -
linux下重要目录的作用
Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp路径:linux系统中,所有的文件与目录都是由根目录/开始,不是以/开头的就是相对路径;.:表示当前目录,也可以用./表示;..:表示上一级目录,也可以用../表示;~:代表用户自己的宿主目录; /:处于Linux文件系统树原创 2018-03-23 15:48:09 · 302 阅读 · 0 评论 -
打印一个菱形
方便简洁的打印一个菱形分析:我们可以认为一个菱形是由4条直线组成,分别是:y=x+r,y=x-r,y=-x+r,y=-x+3*r,如图:具体代码如下: 1 #include 2 int main() 3 { 4 int r=0; 5 scanf("%d",&r); 6 int x,y; 7 for(原创 2018-03-19 21:48:12 · 255 阅读 · 0 评论 -
进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.
一。进入目录需要哪些权限:1,当用户是拥有者时, 进入目录需要执行权限(x权限),但当拥有者只有执行权限时,只能进入目录,但是不能查看目录里的内容。2,当用户是其他人时,进入目录也需要执行权限(x权限)。二。在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限.1,当用户是拥有者时。在目录中要cd进入一个子目录,需要当原创 2018-03-23 16:32:25 · 234 阅读 · 0 评论 -
学习如何使用命令安装gcc/g++, gdb, vim
安装gcc/ g++ ,gdb命令如下:yum install gccyum install g++yum install gdb使用which命令查看是否安装成功which gccwhich g++which gdbgdb基本操作:gdb 可执行文件: 进入调试界面l(list) 查看源码r(run) 执行b原创 2018-03-23 16:47:01 · 161 阅读 · 0 评论 -
linux下编写一个进度条
拿C语言实现一个进度条代码如下: 1 #include 2 #include 3 #include 4 #include 5 6 int main() 7 { 8 int i = 0; 9 char bar[102]; 10 memset(bar, 0 ,sizeof(bar)); 11 const c原创 2018-03-24 16:53:17 · 191 阅读 · 0 评论 -
自主实现一个shell
我实现的shell具有以下功能:1. 支持ls,touch,wc 等外部命令2. 支持输入输出重定向符3. 支持管道命令4 .支持后台作业5. 支持cd,jobs,kill,exit等内部命令(自己还写了一个about 命令 ^ _ ^)6. 支持对ctrl+c 和ctrl +z 信号的处理接下来我们按照编写的步骤一一来分析:(一)命令的解析输入命令的解析在本程序中占到了很大的比重,虽然像这种解析...原创 2018-04-15 10:10:55 · 449 阅读 · 0 评论 -
封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg)
封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数#include<stdio.h>#include<stdlib.h>#include<unistd.h>int process_c...原创 2018-04-15 10:17:26 · 203 阅读 · 0 评论 -
popen/system和fork的区别
一、system和popen1. system()和popen()简介在linux中我们可以通过system()来执行一个shell命令,popen()也是执行shell命令并且通过管道和shell命令进行通信。 system()、popen()给我们处理了fork、exec、waitpid等一系列的处理流程,让我们只需要关注最后的返回结果(函数的返回值)即可。2. system(原创 2018-04-15 10:20:21 · 344 阅读 · 0 评论 -
linux下free命令详解
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。如果加上 -h 选项,输出的结果会友好很多:有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:$ free -h -s 3上面的命令每隔 3 秒输出一次内存的使用情况,直到你按下 ctrl + c。由于 free 命令本身比较简单,所以本文的重点会放...转载 2019-03-23 16:36:01 · 244 阅读 · 0 评论