记一次文件下载失败问题定位过程
通过mongoose下载文件的时候,概率出现下载文件不完整的情况。 软件交互流程如下: 浏览器 <----HTTP连接----> web服务器mongoose <----本地TCP连接---->cgi进程 抓包发现,问题出现的时候,cgi进程发送给mongoose的文件就是不完整的。但是通过strace命令看,cgi进程是读完了整个文件并且都通过系统接口se...
通过mongoose下载文件的时候,概率出现下载文件不完整的情况。 软件交互流程如下: 浏览器 <----HTTP连接----> web服务器mongoose <----本地TCP连接---->cgi进程 抓包发现,问题出现的时候,cgi进程发送给mongoose的文件就是不完整的。但是通过strace命令看,cgi进程是读完了整个文件并且都通过系统接口se...
代码编译的时候,编译服务器莫名其妙的报以下错误: fatal error: error writing to /tmp/ccGjoKTF.s:No space left on device 奇怪了,编译脚本中并没有往tmp目录写文件呀! 仔细看了下错误信息,这个ccGjoKTF.s应该是编译过程的中间文件,文件名是随机值。 然而makefile中并未要求保留汇编代码。 写了个de...
本文主要介绍arm平台curl交叉编译方法。 基于curl + openssl + zlib 的方式组建arm上的https客户端,其中curl作为http客户端,openssl提供https支持,zlib负责处理gzip压缩的http报文。 编译目录结构如下: curl-7.29.0、openssl-OpenSSL_1_0_2g和zlib-1.2.8是待编译的源码 libs用...
本文记录我读过的书,并根据个人体验进行了粗略的等级划分。 等级划分具有很大的主观性,仅供参考。 相关书目维护在xmind文档中,不定期更新:《我读过的书》 =========================================================================== 下面是之前发现的一些不错的技术书籍,可通过链接下载电子版。后续不再更新。 ...
本文简要介绍基于Nginx反向代理,建立Google镜像的步骤。 1. 准备一个可以访问google的服务器 可以考虑申请一个访问google不受限的云服务器,比如亚马逊。 2. 下载源码 wget https://codeload.github.com/openssl/openssl/zip/OpenSSL_1_1_0e -O OpenSSL_1_1_0e.zip wget ft...
本文介绍如何去掉宏__FILE__的路径,只显示文件名。 宏__FILE__展开后会带有路径信息,比如下面的代码: #include<stdio.h> #include<stdlib.h> int main() { printf("file_name:%s\n", __FILE__); return 0; } 如果Makefile内容如下: CFALG...
实际项目中发现Json-C用法不当导致的内存泄露、踩内存问题,大都是因为不清楚下面几个接口的用法。 以下分析基于https://github.com/json-c/json-c( 0.12.1 release)。 1. json_object_new_object生成的对象要不要释放 int main(int argc, char **argv) { struct json_object...
实际项目中看到有人用extern关键字来声明外部函数,这是一个很不好的行为。 一、不利之处 如果函数原型改变的话,每个extern声明的地方都要改一遍。 如果有地方没改到呢? 我们通过一个例子来看下悲剧是怎么发生的。 二、例子 头文件api.h中声明了一个函数func: #ifndef __API_H__ #define __API_H__ void func(int a); ...
最近在项目中遇到问题,在x86平台下调试好的程序,移植到arm上,程序行为完全变了。 示例如下: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char value = 129; if (value > 128) { printf("Bi...
本文主要介绍如何基于openssl制作X.509自签名证书,以及如何使用该证书签发新证书。 一、生成根证书 1. 生成根证书私钥(pem文件) 下面的命令用来生成根证书的私钥,相关参数说明如下: genrsa:使用RSA算法产生私钥,尾部的2048代表密钥长度为2048比特。 aes256:使用256位密钥的AES算法对私钥进行加密,也可以选择其他算法进行加密。若使用加密,...