编程 · 共 138 篇

编程 2016-02-29 / 10 分钟

一个sigprocmask和sigsuspend函数的综合应用

在Linux服务端后台开发中,经常会用到信号处理函数: sigprocmask 和 sigsuspend 。这篇文章主要通过一个综合实例演示如何使用sigprocmask函数屏蔽目标信号(信号掩码)以及sigsuspend函数挂起进程。 ! Linux中编译执行sigprocmask sigsusp...

编程 2016-02-28 / 6 分钟

使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT(二)

前文 《使用TCPDUMP和Wireshark排查服务端CLOSE WAIT一》 https://typecodes.com/cseries/tcpdumpwiresharkclosewait1.html "查看原文" 通过TCPDUMP和Wireshark在利用CentOS7作为服务端、Windo...

编程 2016-02-26 / 14 分钟

使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT(一)

在Linux后端服务网络通信开发中,可能会遇到CLOSE WAIT的状况。引起TCP CLOSE WAIT状态的情况很多,归根结底还是由于被动关闭的一方没有关闭socket链路导致的。这篇文章主要是通过用一个简单的例子通过TCPDUMP和Wireshark这两个工具来模拟产生CLOSE WAIT的情...

编程 2016-02-25 / 41 分钟

Linux多进程和多线程的一次gdb调试实例

Linux C/C++开发中gdb进行多进程和多线程的调试一直比较麻烦,在CSDN上看到高科的一篇文章 《gdb调试多进程和多线程命令》 http://blog.csdn.net/pbymw8iwm/article/details/7876797 "查看原文" 比较有启发,这里就自己重新整理并做了一...

编程 2016-01-07 / 12 分钟

Linux c语言连接MySQL数据库实例

工作上自己在Linux C/C++开发时,用的都是Oracle数据库,毕竟企业级应用追求稳定性好、安全可靠。业余时间做了一些WEB开发,接触到MySQL数据库比较多,也比较喜欢开源的MySQL。之前都是用PHP连接MySQL数据库,这里自己用C语言连接MySQL,执行一些简单的连接、查询操作、异常处...

编程 2016-01-05 / 20 分钟

Linux gcc编译生成静态库和共享动态库的过程

这篇文章主要通过实例演示在Linux下如何使用gcc分别编译生成静态库和动态库文件以及其它程序如何使用这个生成的静态库和动态库。 一、要用到的3个测试程序 1、头文件hello.h: !c ifndef HELLO H define HELLO H void hello const char nam...

编程 2015-08-14 / 20 分钟

Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile

最近写了一个 nix环境下的Makefile文件,支持编译C/C++,同时能够通过参数配置生成ELF目标文件、动态链接库 .so 和静态链接库 .a 文件。 ! Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile https://cdn.typecodes.com/201...

编程 2015-08-13 / 8 分钟

解决make编译链接动态库错误:libxx.so: undefined reference to xx

最近在写一个Makefile,调试时遇到了 libsrcpbl.so: undefined reference to gcProgramName 的问题。在这个Makefile脚本里面,终极目标是通过链接一个自定义的动态库 libsrcpbl.so 生成一个ELF目标文件。 由于链接生成libsrc...

编程 2015-08-12 / 33 分钟

Unix系统中nm命令展示目标文件符号的方法

在unix系统中,通过gnu开源gcc或者g++工具生成的目标文件(object file),可以用 nm 、 objdump 和 readelf 这三个命令来查看。 nm:显示目标文件中的符号; objdump:打印目标文件中的详细信息; readelf:显示关于 ELF 目标文件的信息。 之前在...

编程 2015-08-08 / 10 分钟

Linux gcc链接动态库出错:LIBRARY_PATH和LD_LIBRARY_PATH的区别

昨天在自己的CentOs7.1上写makefile的时候,发现在一个C程序在编译并链接一个已生成好的lib动态库的时候出错。链接命令大概是这样的: root@typecodes tcpmsg gcc -o hello main.c -lmyhello /usr/bin/ld: cannot find...