Linux C/C++后台开发

Talk is cheap. Show me the code!

用strace查找进程卡死原因

最近遇到进程卡死的情况,但是自己调试的过程中并不一定能复现,都是需要运行一段时间某些条件下才会触发,对于这种运行着不能破坏现场的情况,我们可以使用gdb -p和strace -p来跟踪。 首先我们用ps auxf查看我们的进程执行到了哪一步: 可以看到执行到了docker exec -i ...

2018-01-15 14:59:03

阅读数 4638

评论数 0

epoll的ET和LT模式下,accept,recv,send写法

epoll有两种事件模型: Level Triggered (LT) 水平触发 socket接收缓冲区不为空,有数据可读,读事件一直触发 socket发送缓冲区不满,可以继续写入数据,写事件一直触发 Edge Triggered (ET) 边缘触发 socket的接收缓冲区状态变化时触发...

2017-09-22 19:49:45

阅读数 844

评论数 0

docker registry带ssl认证的私有仓库搭建

1.首先docker pull registry默认下载最新版的镜像,我这边是2.6.2版本 2.这边考虑私有仓库部署的服务器可能没有网络,可以使用docker save -o registry.tar registry:2.6.2保存一个镜像,然后把registry.tar打包到部署包里面,下...

2017-08-11 19:42:41

阅读数 1909

评论数 0

从epoll源码分析它的使用

首先来看看epoll_create的真身SYSCALL_DEFINE1(epoll_create, int, size) { if (size <= 0) return -EINVAL; //也就是说参数size根本用不上 return sys_epo...

2017-04-06 15:17:40

阅读数 899

评论数 0

libevent多线程使用bufferevent的那些事

void do_accept(struct evconnlistener *listener, evutil_socket_t fd, struct sockaddr *sa, int socklen, void *ctx) { //不使用Nagle算法,选择立即发送数据而不是等待产生更多...

2016-11-09 17:42:20

阅读数 4201

评论数 4

MySQL C API预处理函数call存储过程

drop procedure if exists SelectAll; delimiter $ create procedure SelectAll(in TableName char(64)) begin set @sql = 'select * from ?'; prepare...

2016-10-09 14:34:11

阅读数 1347

评论数 0

SftpDrive位置不可用

之前分享过《在windows下写linux代码直接编译》,用的SftpDrive,以前都没有发现它不支持win10,在win10上面映射磁盘connect的时候会报错位置不可用。 然后我有一段时间都没法方便的编码,今天找到了一个功能更强大的工具ExpanDrive ExpanDrive百度...

2018-12-11 20:03:17

阅读数 44

评论数 0

source insight解决对namespace不友好的办法

我们在头文件中使用using namespace xxx;如果这个头文件用的目录结构路径,直接在source insight里面点击无法找到的头文件,这样对于命名空间实际上source insight是没有解析到的,那么代码里面直接引用命名空间中的接口都是不提示的。我们可以这么做方便编码: Op...

2018-11-19 21:19:27

阅读数 246

评论数 0

curl常用功能

最简单的get访问(-X GET可选): curl www.test.com 使用用户名和密码: curl -u name:passwd http://www.test.com 查看详细访问过程: curl -v www.test.com post访问(因为-d就指定了post,...

2018-11-03 20:05:41

阅读数 64

评论数 0

map2str和str2map

举个例子: http://www.test.cn:8080/max/123.html?name=kevinchuang&pwd=123456#first 通常http链接部分都是固定,我们需要关心的是从“?”到“#”部分的数据部分。 比如现在我们要构造一个GET请求: ...

2018-11-03 18:55:06

阅读数 63

评论数 0

udp接收缓冲设置多大

先说一下保护消息边界,就是指传输协议把数据当作一条独立的消息在网上传输,接收端只能接收独立的消息。这个机制决定了udp的特性: 1. udp可以多线程对同一个fd进行发包操作,如果是tcp多线程发送,会让流乱序,接收端完全无法解析出来 2. udp接收端每次只能拿到一个包,tcp需要借助自定义...

2018-09-09 23:08:49

阅读数 419

评论数 0

避免不必要的内存拷贝和清0

对于网络编程中,一般都喜欢使用memset清0和memcpy拷贝操作,举个例子: char buffer[1024]; memset(buffer, 0, 1024); memcpy(buffer, proxy_hdr, IPC_HEADER_SZ); memcpy(buffer, trans_...

2018-09-09 21:50:57

阅读数 190

评论数 0

把函数返回值转为异常处理机制

我们这里要使用的是#include <stdexcept>,可以参考官方文档 先举一个例子,比如调用recv的函数返回值处理: int ret = recv(fd...); if (ret > 0){} if (ret == 0...

2018-09-04 13:00:17

阅读数 38

评论数 0

has been changed outside of Source Insight

在使用Source Insight写代码时,遇到它频繁弹窗提示代码在外部被更改 我们可以通过Options->Preferences->Files 就不会再提示了。 注意:这个解决方法,你要保证确实没有外部在修改你正在编辑的文件,频繁弹窗提...

2018-04-26 09:41:01

阅读数 273

评论数 0

MQTT协议通俗讲解

原文链接:https://blog.csdn.net/u011216417/article/details/69666752 参考 Reference 协议文档 Offical Docs v3.1.1 英文原版 中文翻译版 其他资源 网站 MQTT官方主...

2018-04-24 13:06:29

阅读数 128

评论数 0

ntpdate同步时间

先说下ntpdate的用法: usage: ntpdate [option] server 大概就是ntpdate 192.168.0.1这样 最近发现个问题,当强制把本机时间改大了一个月之后,再使用ntpdate向主机同步时间会报错: ntpdate[8115]: Can't a...

2018-04-02 16:36:08

阅读数 100

评论数 0

非阻塞套接字connect

EINPROGRESS The socket is nonblocking and the connection cannot be completed immediately. It is possible to select(2) or poll(2) for completi...

2018-03-22 11:29:32

阅读数 175

评论数 0

linux守护进程

1.守护进程最重要的特性是后台运行。 2.守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。 总之,除开这些特殊性以外,守护进程与普通进程基本上没有什...

2018-03-08 21:05:10

阅读数 687

评论数 0

shell脚本打印日志

#!/bin/bash LOG_FILE="/var/log/test.log" >"${LOG_FILE}" exec &>>${L...

2018-03-05 16:31:31

阅读数 4026

评论数 0

docker run --rm

先引用docker run命令的帮助文档原文: Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…] Run a command in a new container –rm Automatically remove the containe...

2018-03-05 14:55:45

阅读数 1146

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭