![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux后台开发
文章平均质量分 64
前进中的程序员
这个作者很懒,什么都没留下…
展开
-
Linux下C语言时间函数使用及UTC时间转换本地时间
#include <stdio.h>#include <time.h>//gcc time_test.c -o time_testint main(){ time_t now; struct tm* tm_now; time(&now); tm_now = localtime(&now); printf("The number of seconds since January 1, 1970 is %d\n", now原创 2021-08-10 10:26:53 · 1884 阅读 · 0 评论 -
CentOS7.5下使用Docker安装MongoDB及C使用mongo-c-driver-1.18.0操作MongoDB
CentOS7.5下使用Docker安装MongoDB及C使用API操作MongoDB1 Docker安装MongoDB及简单使用2 C使用API操作MongoDB2.1mongo-c-driver-1.18.0驱动安装2.2C语言操作MongoDB简单示例1 Docker安装MongoDB及简单使用安装镜像参考:https://www.runoob.com/docker/docker-install-mongodb.html.1、docker下载MongoDB镜像:docker pull mongo原创 2021-07-17 14:09:12 · 484 阅读 · 0 评论 -
Linux下信号函数signal使用
在Linux后台开发过程中,经常会处理中断信号来决定是否关闭后台程序,所以简单整理了一下signal函数,代码如下:#include <signal.h>#include <unistd.h>#include <stdio.h>//gcc signal.c -o signal//信号处理函数,其中signum为信号值void SignalProc(int signum){ FILE *out = fopen("./signal.log","a..原创 2021-07-10 12:55:37 · 745 阅读 · 0 评论 -
Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换
Git下载代码到Windows再拷贝到Linux下编译时要关闭换行符自动转换一、各操作系统下文件换行符二、TortoiseGit下载Github代码关闭文件换行符三、示例说明1、开启换行符自动转换2、关闭换行符自动转换后 在开发过程中,经常从Github上通过TortoiseGit客户端下载代码到Windows上来学习源码,再通过共享目录拷贝到Linux下编译,因为Windows与Linux下的文件换行符不一样,所以需要注意关闭换行符转换,否则执行configure会出错。一、各操作系统下文件换原创 2021-06-25 15:04:06 · 1326 阅读 · 0 评论 -
CentOS7.4下C++开源YAML配置解析库yaml-cpp-0.6.0的使用
yaml-cpp-yaml-cpp-0.6.0// a sketch of what the new API might look like#include "yaml-cpp/yaml.h"#include <iostream>using namespace std;//g++ -std=c++11 api_test.cpp -o api_test -lyaml-cppint main() { YAML::Node config = YAML::LoadFile("conf原创 2021-06-23 17:54:16 · 616 阅读 · 1 评论 -
CentOS7.4下C++开源日志库easyloggingpp的使用
开源库位置:https://github.com/amrayn/easyloggingpplog_test.cc#include "easylogging++.h"INITIALIZE_EASYLOGGINGPP//g++ log_test.cc easylogging++.cc -o log_test -std=c++11int main(int argc, const char** argv) { // Load configuration from file el::Configura原创 2021-06-23 17:16:56 · 579 阅读 · 0 评论 -
CentOS7.5下使用Boost.Program_options解析命令行参数
CentOS7.5下使用Boost.Program_options解析命令行参数一、安装Boost依赖环境二、简单示例 之前在Linux下使用getopt函数解析命令行参数,Boost也提供了Program_options解析命令行参数,现整理如下:一、安装Boost依赖环境yum -y install boost-devel boost-staticLinux下源码编译安装参考官方文档:https://www.boost.org/doc/libs/1_76_0/more/getting_原创 2021-06-23 15:02:12 · 255 阅读 · 0 评论 -
CentOS7.5下通过systemctl添加服务
CentOS7.5下通过systemctl添加服务一、服务文件二、安装服务三、测试服务 在部署后台应用中,经常会以服务方式运行,当后台程序挂掉后会自动拉起,所以简单整理一下服务部署过程。一、服务文件1、测试脚本service-test.sh,脚本功能每秒钟打印时间戳到日志文件#!/bin/bashBASEPATH="/home/test/service/"LOGFILE=${BASEPATH}"service-test.log"echo `date +"%Y-%m-%d %H:%M:原创 2021-06-19 18:10:20 · 566 阅读 · 0 评论 -
CentOS7.4下编译libpcap-1.9.1及简单抓包使用
CentOS7.4下编译libpcap-1.9.1及简单抓包使用一、源码编译二、测试示例三、补充说明 在学习nmap源码过程中,发现端口扫描底层是使用libpcap设置过滤表达式来接收响应包,从而判断主机是否在线。官网发现tcpdump底层也是libpcap,加上之前的suricata中也有使用libpcap,所以整理了一下libpcap的使用。一、源码编译官方网站:https://www.tcpdump.org/1、源码解压与编译安装:(1)tar -xvf libpcap-1.9.1.原创 2021-06-10 17:31:06 · 1085 阅读 · 0 评论 -
VMvare虚拟机下CentOS7.4通过samba共享目录
在Linux后台开发过程中经常是Windows下编写代码,然后将代码拷贝到需要Linux虚拟机下进行编译,为了避免拷贝操作,通过samba共享目录方式,步骤如下:1、安装sambayum install samba samba-client2、添加共享目录vi /etc/samba/smb.confworkgroup = WORKGROUP[share] path = /root/home/code writable=yes browseable = yes public..原创 2021-06-08 10:22:39 · 132 阅读 · 0 评论 -
VMvare虚拟机下CentOS7.4编译dpdk-18.08.1遇到问题解决与测试
VMvare虚拟机下CentOS7.4编译dpdk-18.08.1遇到问题解决与测试一、编译二、DPDK绑定网卡三、测试helloworld一、编译1、tar -xvf dpdk-18.08.1.tar.xz后进入dpdk-stable-18.08.1,执行 ./usertools/dpdk-setup.sh,选择15 [15] x86_64-native-linuxapp-gcc后出现如下错误2、安装yum install numactl-devel*x86_64 -y后继续执行./usertoo原创 2021-06-08 10:08:16 · 465 阅读 · 0 评论 -
Linux下getopt函数使用
在学习nmap源码时,发现代码中使用getopt_long_only解析命令行参数很方便,所以先整理一下getopt_long_only的简化版本getopt的使用,后续再整理getopt_long与getopt_long_only,代码如下:#include <ctype.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>//相关API及示例说明//getopt说明:h..原创 2021-06-03 16:18:26 · 221 阅读 · 1 评论 -
Linux下fork函数使用及僵尸进程处理
很多的开源代码都是基于C的,涉及很多全局变量,没法使用多线程处理,所以会使用fork进行多进程处理,简单整理了一下fork函数的使用及僵尸进程处理,代码如下:#include <unistd.h> #include <stdio.h>#include <stdlib.h>#include <signal.h>//gcc fork_test.c -o fork_testint g_child_process_count = 2;voi...原创 2021-05-20 15:22:57 · 282 阅读 · 0 评论 -
CentOS7.5下使用Docker安装Kafka及C使用librdkafka调用Kafka
一、安装Kafka1、安装docker:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun2、安装docker-compose:yum install docker-compose3、使用docker-compose.yml安装启动Kafka:(1)先启动docker服务:systemctl start docker(2)安装Kafka及后台启动docker:docker-compose -f docker-co原创 2021-02-27 17:47:52 · 823 阅读 · 0 评论 -
GDB调试C/C++代码-命令帮助与打印内存及设置打印字符串长度
GDB调试C/C++代码-命令帮助与打印内存及设置打印字符串长度一、命令帮助二、打印内存三、设置打印字符串长度一、命令帮助1、进入gdb后输入help会显示命令类列表2、按照提示可以help+命令类名,会显示该类下的所有命令,如help data3、再进一步输入help+具体命令,会显示该命令的详细使用说明,如打印内存命令help x二、打印内存在网络开发时经常会打印报文内存1、命令格式,按照上面的说明翻译:x/FMT ADDRESS(1)ADDRESS:内存地址(2)FMT:打印的原创 2020-11-09 22:51:31 · 949 阅读 · 0 评论 -
GDB调试C++代码-条件断点与断点读写
GDB调试C++代码-条件断点与断点读写一、条件断点二、断点读写三、调试运行的进程一、条件断点学习开源软件调试源码时,尤其是服务端程序,面对不同的客户端消息,经常需要消息过滤,此时就会用到条件断点。条件断点格式:b 断点位置 if 条件表达式以之前的TCP服务端代码为例,当客户端发送"hello"时,在服务端打印客户端发送内容前的代码处增加断点1、开始调试并且添加断点:gdb --args ./Server 6000添加断点:b TcpServer.cpp:98 if 0==strcmp(rec原创 2020-08-30 13:49:50 · 2178 阅读 · 0 评论 -
GDB调试C++代码-设置启动参数与断点及打印变量
GDB调试C++代码一、编译时加上 -g调试信息并且去掉优化信息二、设置启动参数三、设置断点四、开始调试五、打印变量六、退出七、其他常用命令一、编译时加上 -g调试信息并且去掉优化信息在Makefile中增加-g调试信息并且去掉优化信息将之前的Makefile中的文件内容CC = g++ -std=c++11OPT_LEVEL := -O2改为CC = g++ -std=c++11 -gOPT_LEVEL :=代码示例使用之前的TCP Client与Server通用的Makefile编写原创 2020-08-23 11:38:45 · 1732 阅读 · 0 评论 -
CentOS7.5下iptables同一服务器内与不同服务器之间端口转发
CentOS7.5下iptables本地端口转发1、配置规则:iptables -t nat -A OUTPUT -p tcp --dport 6000 -j REDIRECT --to-ports 6666规则说明:将本机6000端口的TCP包转发到6666端口上2、测试:开启两个TCP Server服务(使用之前的TCP服务器)./Server 6000./Server 66663、发送数据(使用之前的客户端):./Client 127.0.0.1 6000 “hello this is原创 2020-08-08 12:11:51 · 497 阅读 · 0 评论 -
工作中经常用到的MySQL功能整理
粗体字段说明TABLENAME数据库表名,真正使用时替换真实即可DBNAME数据库名称,真正使用时替换真实即可COLUMNNAME字段名称,真正使用时替换真实即可INDEXNAME索引名称,真正使用时替换真实即可增加1、复制表结构:CREATE TABLE NEW_TABLENAME LIKE TABLENAME;添加旧表记录到新创建的表INSERT INTO NEW_TABLENAME SELECT * FROMTABLENAME WHERE...原创 2020-08-01 17:52:38 · 277 阅读 · 0 评论 -
工作中经常用到的Linux命令整理
文件相关进程相关网络相关原创 2020-07-31 15:28:33 · 208 阅读 · 0 评论 -
C++11的简单学习及生产者消费者示例
lambda格式[捕获列表](参数列表) -> 返回类型 {// 函数体}值捕获void TestLambda(){ //1.值捕获,可以写成[=],被捕获的变量在lambda表达式创建时拷贝,而非调用时才拷贝 int nVal = 1; //auto copyValue = [nVal] //方式1 auto copyValue = [=] //方式2 { return nVal; }; nV原创 2020-07-30 22:10:28 · 178 阅读 · 0 评论 -
C++ STL的基本使用及注意事项
string头文件:#include <string>当string对象和字符串字面值混合连接操作时,+操作符的左右操作数至少有一个是string类型的,如 std::string strValue = "abc"; std::string strValue2 = strValue + "def"; //正确 std::string strValue3 = "abc" + "def"; //错误vector头文件:#include <vector>原创 2020-07-28 23:04:13 · 258 阅读 · 0 评论 -
C/C++开发需要特殊注意的小知识
C/C++小知识FUNCTION,LINE,FILE用于日志定位,分别代表函数名、行号、文件名#include <stdio.h>#include <stdlib.h>void test(){ printf("cur file : (%s) ; cur func : (%s) ; cur line : (%d)\n", __FILE__, __FUNCTION__, __LINE__);}int main(int argc, char** argv){ tes原创 2020-07-27 23:11:01 · 167 阅读 · 0 评论