- 博客(66)
- 资源 (10)
- 收藏
- 关注
原创 TFTP协议详解
TFTP协议详解。参考文章:https://www.pianshen.com/article/822220160/RFC:https://www.rfc-editor.org/rfc/rfc1350
2023-02-22 16:14:04 2153
原创 Linux定时工具--crontab
以下都来源man手册。Crontab命令man 1 crontab如何使用crontab命令CRONTAB(1) General Commands Manual NAME crontab - maintain crontab files for individual users (Vixie Cron) 每个用户有单独的...
2020-08-15 09:50:27 757
原创 Linux 工具--logrotate
以下内容来自logrotate的man手册。LOGROTATE(8) System Administrator's Manual LOGROTATE(8)NAME logrotate ‐ rotates, compresses, and mails system logsSYNOPSIS logrotate [-dv] [-f|--force] [-s...
2020-08-15 09:42:29 461
原创 Linux 守护进程日志文件处理--logrotate+crontab
守护进程离不开日志,日志多了就有想办法压缩、备份、删除。如果守护进程自带此功能,那么问题就没有了。如果没有此功能,可以使用其它方法:1.使用syslogsyslog带日志整理的功能;2.logrotate+crontab不想把日志交给syslog,想自己处理?logrotate可以帮这个忙。root@debian:@@@# cat /etc/logrotate.conf # see "man logrotate" for details# rotate log file..
2020-08-06 17:45:05 675
原创 Source Insight快捷键大全
Source Insight快捷键大全注释代码: Ctrl+8去掉注释代码:Ctrl+Shift+8//上面2个自行添加的退出程序 : Alt+F4重画屏幕 : Ctrl+Alt+Space完成语法 : Ctrl+E复制一行 : Ctrl+K恰好复制该位置右边的该行的字符 : Ctrl+Shift+K复制到剪贴板 : Ctrl+Del剪切一行 : C...
2020-04-24 11:12:06 773
原创 OpenSSL编程的基本步骤
OpenSSL编程的基本步骤===================================== 启用加密 ====================================== 客户端必备过程: 0. 变量定义 BIO *conn; /*底层socket连接*/ SSL *ssl; /*SSL连接*/ S...
2020-04-22 09:34:37 1394
原创 Linux/Unix 编程 —— System V信号量
1 介绍信号量提供一种访问机制,让一个临界区同一时间只有一个线程在访问它, 也就是说信号量是用来调协进程对共享资源的访问的,防止出现因多个程序同时访问一个共享资源而引发的一系列问题。其中共享内存的使用就要用到信号量。一个信号量是一个由内核维护的整数,其值被限制为大于或等于0。在-一个信 号量上可以执行各种操作( 即系统调用),包括:将信号量设置成-一个绝对值; 在信号量当前值的基础上...
2020-03-31 15:29:05 371
原创 Linux/Unix 进程间通信IPC
1 IPC 工具分类图43-1总结了UNIX系统上各种通信和同步工具,并根据功能将它们分成了三类。通信:这些工具关注进程之间的数据交换。 同步:这些进程关注进程和线程操作之间的同步。 信号:尽管信号的主要作用并不在此,但在特定场景下仍然可以将它作为一种同步技术。更罕见的是信号还可以作为一种通信技术:信号编号本身是一种形式的信息, 并且可以在实时信号上绑定数据(一个整数或指针)尽管其中...
2020-03-31 10:26:46 322
原创 LZ77 压缩和解压缩
LZ77压缩算法编码原理详解(结合图片和简单代码)转载自:https://www.cnblogs.com/junyuhuang/p/4138376.html前言 LZ77算法是无损压缩算法,由以色列人Abraham Lempel发表于1977年。LZ77是典型的基于字典的压缩算法,现在很多压缩技术都是基于LZ77。鉴于其在数据压缩领域的地位,本文将结合图片和源码详细介绍其原理。...
2020-02-21 13:31:26 1791 1
原创 如何在man手册中查找C/C++结构体
【问题】如何在man手册中查找C/C++结构体参考:How to find man pages for C structs (struct sockaddr_in)?方法一最简单的方法,Google根据搜索到的结果可知,要查找的关键字在7手册页的ip项中方法二快速搜索man -k keyword暴力搜索,查找所有man手册man -K keyword...
2019-11-25 10:20:45 1929
原创 客户端服务器断开连接后,新连接在描述符号不变情况下,是否可以继续通信
客户端服务器断开连接后,新连接在描述符号不变情况下,是否可以继续通信?当然可以,描述符指定了一个socket通信,描述符号相同,无论socket使用方式是否变化或者重新连接,使用原来描述符的部分不受影响。测试程序:客户端:#include <sys/types.h>#include <errno.h>#include <sys/socket.h&...
2019-11-21 17:18:22 421
原创 shell 中使用>/dev/null后对性能的影响
一个测试脚本:#!/bin/shi=1for((i=1;i<100000;i++))do echo $idone测试无输出重定向的时间:bash-2.05b# time ./a.sh......real 0m14.247suser 0m0.890ssys 0m0.170s测试输出重定向到/dev/null情况...
2019-11-15 14:42:21 511
原创 Linux 指定编译时动态库路径和运行时动态库路径--解决报错symbol lookup error和cannot open shared object file
动态库的两种路径linux指定动态库路径包括:1.指定编译时动态库路径;2.指定运行时动态库路径。后文提到的动态库路径都是指的是这两种路径。众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib(不管是编译还是运行都会默认搜索这两个路径)。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应...
2019-11-15 09:58:36 5382
原创 gcc -fpic 和 -fPIC 参数问题
gcc -fpic 和 -fPIC 参数问题目的:生成位置无关的代码。位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。如果不加-fPIC,则加载.so文件的代码段时,代码段引用的数据对象需要重定位,...
2019-11-14 17:16:13 3474
原创 GDB -fprofile-arcs -ftest-coverage 选项
-fprofile-arcs -ftest-coverage 选项的使用参考:https://gcc.gnu.org/onlinedocs/gcc-4.4.1/gcc/Debugging-Options.html-fprofile-arcsAdd code so that program flowarcsare instrumented. During execution t...
2019-11-14 14:09:35 526
原创 Linux 程序性能分析与优化
参考:https://linuxtools-rst.readthedocs.io/zh_CN/latest/advance/03_optimization.html目录1. 分析系统瓶颈2. 分析内存瓶颈3. 分析IO瓶颈4. 分析进程调用5. 优化程序代码 gprof使用步骤6. 其它工具1. 分析系统瓶颈系统响应变慢,首先得定位大致的问题出在哪里,...
2019-10-17 10:41:52 1733
原创 SMTP协议的常用命令和应答码
从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的。在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响。双方如此反...
2019-09-30 16:47:37 3932
转载 CentOS6.3 Samba安装配置、多用户、加域
第一步:安装相关组件yum install samba4* krb5* -y samba4是什么就不用说了,krb5是为了以后将samba加入AD域而需要用到 KRB(Kerberos协议)主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即SSO(S...
2019-09-23 09:28:55 1174
原创 LINUX 大文件分包压缩和批量解压命令TAR // TAR 排除指定目录
大文件分割压缩分割命令:split 命令 功能说明:切割文件。 语 法:split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名] 补充说明:split可将文件切成较小的文件,预设每1000行会切成一个小文件。 参 数:...
2019-09-06 14:00:10 792
原创 使用vim去掉代码中的中文字符
有时粘贴代码到Linux中,一些隐藏的中文空格导致程序不正常。可以使用以下命令进行替换成空格就好了。# sed-i's/\xc2\xa0/\x20/g' test.c可以使用以下命令直接删除中文空格。# sed-i's/\xc2\xa0//g' test.c...
2019-08-08 15:19:23 769
原创 Linux C —— c程序中获取shell脚本输出(如获取system命令输出)
目录1.使用临时文件1.1 使用shell的重定向1.2 freopen标准输出到文件2. 使用匿名管道3. 使用popen4. 小结1.使用临时文件1.1 使用shell的重定向首先想到的方法就是将命令输出重定向到一个临时文件,在我们的应用程序中读取这个临时文件,获得外部命令执行结果,代码如下所示: #define CMD_STR_LEN 10...
2019-08-08 15:17:11 3055 1
转载 Linux实用工具—— gprof 统计代码行执行次数、时间
gprof1.1简介gprof实际上只是一个用于读取profile结果文件的工具。gprof采用混合方法来收集程序的统计信息,他使用检测方法,在编译过程中在函数入口处插入计数器用于收集每个函数的被调用情况和被调用次数;也使用采样方法,在运行时按一定间隔去检查程序计数器并在分析时找出程序计数器对应的函数来统计函数占用的时间。Gprof具有以下优缺点:1)优点:...
2019-08-02 15:36:23 1580
原创 Linux实用工具—— 静态分析C语言生成函数调用关系的利器cflow
目录cflow的安装和使用cflow的安装cflow的使用文本输出转成dot文件dot文件生成图片 参考连接:cflow的安装和使用cflow的安装cflow是一款静态分析C语言代码的工具,通过它可以生成函数的调用关系。和calltree不一样,cflow有独立的网页介绍它(https://www.gnu.org/software/cflow/#TO...
2019-08-02 11:11:23 1753
原创 Linux C —— 三种链接属性(external、internal、none)
一、问题引出当多个源文件链接在一起,我们如何处理相同名字的标识符?假设多个源文件均含有变量a,那么它的值到底采用哪个源文件定义的值呢?这就涉及到标识符的链接属性。二、对象链接属性针对标识符而言,对象通常是变量、函数名、形参。三、分类链接属性(linkage)分为三种——外部(external)、内部(internal)、无(none)3.1 外部(external)判...
2019-07-05 16:52:25 2337
转载 解决SecureCRT远程登陆Linux误按ctrl+s锁屏
解决远程登陆Linux误按ctrl+s锁屏转自:https://blog.slogra.com/post-198.html 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常会习惯性的按下Ctrl+s来保存文件内容.殊不知这样按下去后面会造成整个终端不响应了,ssh连接还好说,直接关闭ssh连接再重新连接就可以了,但在服务器前使用的话,就只能眼睁睁的看...
2019-07-04 15:01:26 1902
原创 linux C —— 通用链表(整理自Linux内核链表)
目录1. 简介1.1 内核链表的思想1.2 内核链表的技术原理:2. 基于内核链表的通用链表2.1 list.h2.2 test.c3. 内核链表4. 文件下载1. 简介在Linux源代码树的include/linux/list.h文件中,采用了一种类型无关的双循环链表实现方式。其思想是将指针prev和next从具体的数据结构中提取出来构成一种通用的"...
2019-06-18 00:44:35 2666 1
原创 Linux——内存文件系统
Linux内存文件系统:可满足高IO的要求ramdisk: 基于虚拟在内存中的其他文件系统(ex2fs)。 挂载方式:mount /dev/ram /mnt/ramdisk ramfs: 物理内存文件系统,只存在于物理内存中。其大小也不是固定的,而是随着所需要的空间动态得增减。 挂载方式:mount -t ramfs none /mnt/ramfs -o maxsize=2000 ...
2019-06-03 14:55:50 9587
原创 Linux C编程 —— 通过文件描述符获得文件路径
文件描述符可以通过open等函数获得;文件流可以通过fopen获取,然后通过fileno获取文件流对应的文件描述符。#include "apue.h"intmain(void){ char name[L_tmpnam], line[MAXLINE]; FILE *fp; struct stat statbuf; char buf[10...
2019-06-01 16:28:02 1288
原创 Linux C编程——结构体操作注意事项(深拷贝、偏移量)
在结构体中,需要考虑的有:内存对齐,下面例子可以看到; 结构体含一级、二级指针,有深拷贝和浅拷贝之分; s.i和s->i是计算偏移量,在CPU中计算,不会操作内存。有一个宏 offoset 可以计算结构体成员偏移:SYNOPSIS #include <stddef.h> size_t offsetof(type, member);...
2019-05-31 16:48:05 604 2
原创 Linux 编程——获取时间戳,精确到毫秒
获取时间戳,精确到毫秒/* 日志时间戳,精确到毫秒 */char* get_stime(void){ static char timestr[200] ={0}; struct tm * pTempTm; struct timeval time; gettimeofday(&time,NULL); pTempTm = ...
2019-05-31 10:56:24 7655
原创 Linux C编程——strtok_r 和 strtok 函数
一、简介NAME strtok, strtok_r - extract tokens from stringsSYNOPSIS #include <string.h> char *strtok(char *str, const char *delim); char *strtok_r(char *s...
2019-05-31 09:40:33 739
原创 Linux C 编程 —— fcntl、ioctl和stat区别
1、 fcntl#include <unistd.h>#include <fcntl.h>int fcntl(int fd, int cmd, ... /* arg */ );fcntl函数可以改变某进程中一个已打开的文件的属性,可以重新设置读、写、追加、非阻塞等标志(这些标志称为File Status Flag),而不必重新open文件。通过fcntl...
2019-05-22 09:21:17 652
原创 unix环境高级编程第三版(apue)源代码编译及使用
(1)下载源代码,可以去官网下载:http://apuebook.com/code3e.htm(2)解压缩源代码文件:tar -zxvf src.3e.tar.gz(3)安装libbsd-devel,否则编译会报错不通过,会提示编译threads文件夹里面的内容时报错:/tmp/ccvzZHtf.o: In function `thr_fn':barrier.c:(.text+0x...
2019-05-17 23:25:28 555
原创 Linux C 编程——使用json-c库读取json格式的配置文件
1. 简介:参考:https://github.com/json-c/json-c/wikihttps://github.com/json-c/json-chttps://blog.csdn.net/u014530704/article/details/72674642?utm_source=copyhttps://blog.csdn.net/w_ww_w/article...
2019-05-17 15:14:00 8124
原创 Linux C 开发 配置文件读写库 Libconfig
一:什么是Libconfig?程序开发过程中往往很多参数需要放在配置文件中,因为这样可以避免更改代码重新编译的问题。通常我们可以通过自己读init文件来实现,不过已经有很多人做了这方面的东西,可以借用,Libconfig就是其中之一。Libconfig是一个用于处理结构化配置文件的简单库。 此文件格式比XML更紧凑,更易读,更适合内存受限的设备。 与XML不同,它是类型感知的,因此不必在应...
2019-05-17 10:26:04 4293
原创 Linux C 开发 —— #if、#ifdef、#if defined之间的区别
https://www.cnblogs.com/wuchanming/p/4057630.html#if的使用说明#if的后面接的是表达式#if (MAX==10)||(MAX==20) code... #endif它的作用是:如果(MAX==10)||(MAX==20)成立,那么编译器就会把其中的#if 与 #endif之间的代码编译进去(注意:是编译进去,不是执行!!)#...
2019-05-10 15:58:17 3150
原创 C语言结构体成员偏移量的计算
请参考https://blog.csdn.net/coding__madman/article/details/51556411计算方式:1. 使用宏函数:#include <stddef.h> size_t offsetof(type, member);2. 自己计算偏移(B-A形式)测试代码如下:#include <stdi...
2019-04-11 15:29:52 1870
原创 Linux 三剑客 —— sed/grep/awk
对Linux的操作就是对文件的处理,那么怎么能更好的处理文件呢?这就要用到我们上面的三剑客命令。三剑客就是普通的命令,有的把他们叫做工具,在我看来都一样。而正则表达式就好比一个模版。三剑客能读懂这个模版。就这么简单。注意只有三剑客才能读懂这个模版哦!三剑客的功能非常强大,但我们只需要掌握他们分别擅长的领域即可:grep擅长查找功能,sed擅长取行和替换。awk擅长取列。三个命令的运用形式...
2019-03-27 16:05:56 887
转载 Linux 系统编程 —— GCC常用命令
目录1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅...
2019-03-11 10:52:49 223
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人