原创 Linux 指定編譯時動態庫路徑和運行時動態庫路徑--解決報錯symbol lookup error和cannot open shared object file

動態庫的兩種路徑 linux指定動態庫路徑包括:1.指定編譯時動態庫路徑;2.指定運行時動態庫路徑。後文提到的動態庫路徑都是指的是這兩種路徑。衆所周知,Linux動態庫的默認搜索路徑是/lib和/usr/lib(不管是編譯還是運行都會默認

原创 shell 中使用>/dev/null後對性能的影響

一個測試腳本:  #!/bin/sh i=1 for((i=1;i<100000;i++)) do echo $i done  測試無輸出重定向的時間: bash-2.05b# time ./a.sh ... ...

原创 GDB -fprofile-arcs -ftest-coverage 選項

-fprofile-arcs -ftest-coverage 選項的使用 參考:https://gcc.gnu.org/onlinedocs/gcc-4.4.1/gcc/Debugging-Options.html   -fprofile

原创 gcc -fpic 和 -fPIC 參數問題

gcc -fpic 和 -fPIC 參數問題 目的:生成位置無關的代碼。 位置無關代碼(Position-Independent Code),則產生的代碼中,沒有絕對地址,全部使用相對地址,故而代碼可以被加載器加載到內存的任意位置,都可以

原创 Linux/Unix 進程間通信IPC

1 IPC 工具分類 圖43-1總結了UNIX系統上各種通信和同步工具,並根據功能將它們分成了三類。 通信:這些工具關注進程之間的數據交換。 同步:這些進程關注進程和線程操作之間的同步。 信號:儘管信號的主要作用並不在此,但在特定場景下仍

原创 客戶端服務器斷開連接後,新連接在描述符號不變情況下,是否可以繼續通信

客戶端服務器斷開連接後,新連接在描述符號不變情況下,是否可以繼續通信? 當然可以,描述符指定了一個socket通信,描述符號相同,無論socket使用方式是否變化或者重新連接,使用原來描述符的部分不受影響。 測試程序: 客戶端: #in

原创 如何在man手冊中查找C/C++結構體

【問題】如何在man手冊中查找C/C++結構體 參考:How to find man pages for C structs (struct sockaddr_in)? 方法一 最簡單的方法,Google 根據搜索到的結果可知,要查找

原创 Linux/Unix 編程 —— System V信號量

目錄 1 介紹 2 信號量各種操作合集 1. 創建信號量 2. 初始化信號量集 3. 信號量控制 4. 關聯結構 5 信號量操作 6. 信號量刪除 3 二元信號量協議實現(可重用) 1 介紹 信號量提供一種訪問機制,讓一個臨界區同一時間只

原创 SMTP協議的常用命令和應答碼

從前面的通訊模型可以看出SMTP協議在發送SMTP和接收SMTP之間的會話是靠發送SMTP的SMTP命令和接收SMTP反饋的應答來完成的。在通訊鏈路建立後,發送SMTP發送MAIL命令指令郵件發送者,若接收SMTP此時可以接收郵件則作出O

原创 Linux C 編程 —— fcntl、ioctl和stat區別

1、 fcntl #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd, ... /* arg */ ); fcntl函數可以改變某進程中一個已打開的文件的屬

原创 OpenSSL編程的基本步驟

OpenSSL編程的基本步驟  ===================================== 啓用加密 ====================================== 客戶端必備過程: 0

原创 LZ77 壓縮和解壓縮

LZ77壓縮算法編碼原理詳解(結合圖片和簡單代碼) 轉載自:https://www.cnblogs.com/junyuhuang/p/4138376.html 前言   LZ77算法是無損壓縮算法,由以色列人Abraham Lemp

原创 Linux 程序性能分析與優化

參考:https://linuxtools-rst.readthedocs.io/zh_CN/latest/advance/03_optimization.html 目錄 1. 分析系統瓶頸 2. 分析內存瓶頸 3. 分析IO瓶頸 4.

原创 LINUX 大文件分包壓縮和批量解壓命令TAR // TAR 排除指定目錄

大文件分割壓縮   分割命令: split 命令   功能說明:切割文件。   語  法:split [--help][--version][-<行數>][-b <字節>][-C <字節>][-l <行數>][要切割的文件][輸出文件名]

原创 使用vim去掉代碼中的中文字符

有時粘貼代碼到Linux中,一些隱藏的中文空格導致程序不正常。 可以使用以下命令進行替換成空格就好了。 # sed -i 's/\xc2\xa0/\x20/g' test.c 可以使用以下命令直接刪除中文空格。 # sed -i 's/\