Linux基础
文章平均质量分 72
吓人的猿
专注Linux系统开发,网络编程,服务后台开发
展开
-
Linux的find与locate命令使用详解
find 命令 直接在全文件系统上搜寻,功能强大,速度慢。find [path] [-option] [ -print -exec -ok command ] {} \; path: #要执行查找的目录。-option: #查找的具体方法。-print: #find命令将匹配的文件输出到标准输出。-exec: #find命令对匹配的文件执行该参数所给出的...原创 2018-02-26 16:34:37 · 2847 阅读 · 1 评论 -
Linux TCP编程常见问题考虑
1 搭建一个TCP服务器源码:tcp_server.c#include <stdio.h>#include <string.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#defi...原创 2018-03-01 20:22:17 · 256 阅读 · 0 评论 -
Linux下域名IP互转
域名转换通过域名获取ip地址等信息#include <netdb.h>struct hostent *gethostbyname(const char *name);/* name:指向主机名的指针。 返回一个hostent指针记录着主机信息。*/struct hostent{ char *h_name; //表示的是主机的规范名。例如www.goog...原创 2018-03-01 23:54:20 · 1978 阅读 · 0 评论 -
Linux C/C++调用mongDB
c调用mongoDB安装mongoDB-c-driver安装必要软件sudo apt-get install git autoconf automake libtool下载mongoDB源码包$ git clone https://github.com/mongodb/mongo-c-driver.git$ cd mongo-c-driver$ ./autogen.sh --with-libb...原创 2018-03-03 16:27:19 · 951 阅读 · 1 评论 -
ubuntu下搭建ftp服务端
ftp服务器的搭建 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。 FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。 默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。1 安装vsftpd使用apt-get 安装sudo apt-get install v...原创 2018-03-03 17:19:12 · 408 阅读 · 0 评论 -
ubuntu下搭建nfs服务器
nfs服务器 NFS(Network File System)即网络文件系统, 在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。nfs是通过挂载的方式来访问。安装nfs服务器sudo apt-get install nfs-kernel-server设置/etc/exports配置文件sudo vi /etc/exports/hom...原创 2018-03-03 17:21:00 · 3040 阅读 · 0 评论 -
ubuntu下搭建samba服务器
samba服务器 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。 我们可以使用samba来实现我们Linux虚拟机与windows主机文件共享,便于开发。第一步安装samb...原创 2018-03-03 17:21:49 · 328 阅读 · 0 评论 -
linux gdb的使用
gdb的使用 gdb(GNU symbolic debugger)是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 start #开始调试,停在第一行代码处,(gdb)startl #list的缩写查看源代码,(gdb)lb <lines> #b: Breakpo...原创 2018-03-03 17:24:37 · 6329 阅读 · 0 评论 -
linux 查看进程打开的文件
查看进程打开的文件lsof [options] [name]例如:源码test.c#include <stdio.h>#include <unistd.h>int main(void){ FILE* fp = fopen("file", "w"); if(fp == NULL) { return 1; } wh...原创 2018-03-03 17:25:57 · 4752 阅读 · 0 评论 -
git代码仓库使用
git代码仓库使用1、 如果使用git与远端仓库连接#使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。git clone [url]#如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:git initgit remote add origin [url]git remote set-url origin...原创 2018-03-03 18:06:31 · 2838 阅读 · 0 评论 -
POSIX共享内存
3.3 POSIX共享内存 在Linux中,POSIX共享内存对象驻留在tmpfs伪文件系统中。系统默认挂载在/dev/shm目录下。当调用shm_open函数创建或打开POSIX共享内存对象时,系统会将创建/打开的共享内存文件放到/dev/shm目录下。 创建共享内存的基本步骤是:程序执行shm_open函数创建了共享内存区域,此时会在/dev/shm/创建共享内存文件.#include &...原创 2018-02-27 21:35:30 · 459 阅读 · 0 评论 -
POSIX消息队列
3.2 POSIX消息队列 消息队列可以认为是一个链表。进程(线程)可以往里写消息,也可以从里面取出消息。一个进程可以往某个消息队列里写消息,然后终止,另一个进程随时可以从消息队列里取走这些消息。这里也说明了,消息队列具有随内核的持续性,也就是系统不重启,消息队列永久存在。3.2.1 创建(并打开)、关闭、删除一个消息队列#include <fcntl.h> /*...原创 2018-02-27 21:34:34 · 326 阅读 · 0 评论 -
POSIX信号量
3.1 POSIX信号量 POSIX信号量有两种:有名信号量和无名信号量,无名信号量也被称作基于内存的信号量。有名信号量通过IPC名字进行进程间的同步,而无名信号量如果不是放在进程间的共享内存区中,是不能用来进行进程间同步的,只能用来进行线程同步,线程同步将在后面讲到,这里我们重点研究有名信号量。3.1.1 创建一个信号量 创建的过程还要求初始化信号量的值。根据信号量取值(代表可用资源的数目)...原创 2018-02-27 21:31:20 · 225 阅读 · 0 评论 -
Linux文件权限
在Linux中,每个文件有三组权限,不同用户有不同的文件操作权限,用户被分为文件所属用户user,文件所属组group里面的用户, 以及其他用户others。 例如: drwxr-xr-x 2 where where 4096 6月 25 16:53 Videos user的权限是rwx, 代表可读可写可执行, group的权限是r-x, 代表可读可执行,othersr...原创 2018-02-26 16:41:36 · 278 阅读 · 0 评论 -
智能检查linux c/c++代码是否有内存泄漏
检查内存泄漏 最令Linux程序员头疼的莫过于内存泄露了,即使你是在优秀的程序员,你也不能保证所以的malloc操作都有对应的free,那必要的工具就是必不可少的了。在一般的Linux发行版中,有一个自带的工具可以很方便的替你完成这些事,这个工具就是mtrace。源代码test.c:#include <stdio.h> #include <mcheck.h> in...原创 2018-02-26 16:58:09 · 494 阅读 · 0 评论 -
linux动态库与静态库
动态库与静态库 现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始。尽量不重复做别人已经做过的事,“站在巨人的肩膀上”做事情。 根据链接时期的不同,库又有:静态库和共享库(动态库)。 二者的不同点在于代码被载入的时刻不同, 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小...原创 2018-02-26 17:04:01 · 317 阅读 · 0 评论 -
Linux 使用lseek生成4G以上的空洞文件
创建4g空洞文件源码lseek_creat.c#ifndef _FILE_OFFSET_BITS #define _FILE_OFFSET_BITS 64#endif#include<stdio.h>#include <fcntl.h>#include <unistd.h>int main(int argc, char** argv){ ...原创 2018-02-27 11:10:59 · 507 阅读 · 0 评论 -
Linux文件IO open、dup、fork内核原理图解
Linux文件IO open、dup、fork内核原理分析1、open一个文件 一个Linux进程启动后,会在内核空间创建一个PCB进程控制块,PCB是一个进程的私有财产。 这个PCB中有一个已打开文件描述符表,记录着所有该进程打开的文件描述符以及对应的file结构体地址。 默认情况下,启动一个Linux进程后,会打开三个文件,分别是标准输入、标准输出、标准错误分别使用了0、1 、2号文件描述符。...原创 2018-02-27 14:10:36 · 1881 阅读 · 0 评论 -
Linux 未决信号集与信号屏蔽字
信号集 信号集顾名思义就是信号的集合,信号集的类型为sigset_t,每一种信号用1bit来表示,前面我们提到信号有64种,那么这个sigset_t类型至少占64bit,可以通过sizeof(sigset_t)来查看。 每个进程的PCB进程控制块中都有两个信号集,一个叫作未决信号集,一个叫作信号屏蔽字,信号集的每一位不是0就是1,初始状态下,两个信号集的值都为0。 当有信号传递到该进程的时候...原创 2018-02-27 18:11:25 · 1259 阅读 · 0 评论 -
Linux信号捕捉之sigaction
进程可以通过三种方式来响应和处理一个信号:(1)忽略信号:即对信号不做任何处理,但是两个信号不能忽略:SIGKILL以及SIGSTOP.(2)捕捉信号:当信号发生时,执行用户定义的信号处理函数。(3)执行默认操作: Linux对每种信号都规定了默认操作,man 7 signal查看。Term Default action is to terminate the process.Ign De...原创 2018-02-27 18:19:27 · 427 阅读 · 0 评论 -
Linux SIGCHLD信号处理
SIGCHLD信号处理SIGCHLD的产生条件1、子进程终止时2、子进程接收到SIGSTOP信号停止时3、子进程处在停止态,接受到SIGCONT后唤醒时源代码signal_test.c#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <signal.h>v...原创 2018-02-27 18:43:09 · 1225 阅读 · 0 评论 -
Linux管道FIFO
管道FIFO2.1 管道基本概念 管道是针对于本地计算机的两个进程之间的通信而设计的通信方法,管道建立后,实际上是获得两个文件描述符:一个用与读取而另一个用于写入。任何从管道写入端写入的数据,可以从管道读取端读出。 管道通信具有以下特点:管道是半双工的,数据只能向一个方向流动,需要双方通信时,要建立起两个管道。管道存放在内存中,是一种独立的文件系统。2.2 无名管道的创建与读写 系统调用p...原创 2018-02-27 21:12:07 · 1216 阅读 · 0 评论 -
Linux下文件描述符剖析
了解莱茨狗 2018年1 月 12 日,百度正式上线了区块链开放平台“BaaS”后,百度金融区块链实验室日前又推出了区块链宠物莱茨狗。 通俗的来讲莱茨狗是百度基于区块链技术实现的一个大家养狗的游戏,当然这狗是虚拟的,说白了你就是收藏一些狗狗的照片。 2018年2月04日才正式推出,但是百度并不是第一家做这种游戏的公司,2017 年 12 月初,基于以太坊平台的应用 CryptoKitti...原创 2018-03-06 15:55:11 · 3548 阅读 · 1 评论