原创 gcc 編譯階段

【編譯階段】 預處理 --> 編譯成彙編代碼 --> 編譯成機器碼 --> 鏈接 gcc -E: 預處理完之後停止 gcc -S: 生成彙編代碼之後停止 gcc -c: 生成 .o 機器碼之後停止 cpp: The C Preproc

原创 gdb 一步一步調試程序

例子: #include <stdio.h> #include <time.h> #include <stdlib.h> int main (int argc, char *argv[]) { time_t time_stam

原创 CIL 與 PE 格式

PE 格式 .exe, .dll 都屬於 PE 格式。 CIL 中間語言不是 C# 的特權,C++/C 等編譯型語言都可以生成中間語言。 CIL 與 PE 格式 .dll, .exe 中包含的並不全是機器碼,它既可以包含機器碼,也可包

原创 進程收不到網絡數據,但 tcpdump 能抓到包

情景:服務端進程綁定了 udp://0.0.0.0:10004 端口,客戶單一直在往服務端發送數據,但是 strace 發現,服務端進程一直都在輪詢調用 epoll_wait, 也就是服務端程序一直都沒有收到過時間通知。但是通過 tcpd

原创 Windows 去除關機選項

去除關機選項 gpedit.msc User Configuration(用戶配置) Administrative Templates(管理模板) Start Menu and Taskbar(“開始”菜單和任務欄) Remove and

原创 多線程、多進程寫同一日誌情況下的日誌庫中 I/O 的選型

文件描述符與 inode 相關背景知識 出自《The Linux Programming Interface》 多線程 有上面的背景知識可知,多線程情況下寫同一文件用的是同一個【文件偏移量】,因此只要單條寫日誌操作是原子操作,就不會出

原创 單個進程監聽多個端口及多個進程監聽同一個端口

單個進程監聽多個端口 單個進程創建多個 socket 綁定不同的端口,TCP, UDP 都行 多個進程監聽同一個端口(multiple processes listen on same port) 通過 fork 創建子進程的方式可以實

原创 samba 配置

查看 samba 用戶 pdbedit -L 啓動/停止/重啓/查看狀態 service smb status/... 添加用戶及用戶目錄 smbpasswd -a xxx # 必須是已有的系統用戶

原创 gtest(Google Test)使用

gtest 代碼目錄結構 說明:以 gtest-1.7.0 爲例 cmake, codegear, make, msvc, xcode 構建測試項目的構建文件,如 make 就是 Makefile. To write a test pro

原创 Ctrl+Z 暫停程序及重啓程序

Ctrl+Z - 暫停進程並放入後臺 jobs - 顯示當前暫停的進程 bg N 使第N個任務在後臺運行 fg N 使第N個任務在前臺運行 bg, fg 不帶 N 時表示對最後一個進程操作 On Unix-like systems, C

原创 C++ memset 類對象 crash(core) 的問題

#include <iostream> class Base1 { private: char aChar; short aShort; int aInt; float aFloat; }; clas

原创 kill 命令

kill <pid> 默認信號:-15(SIGTERM), 有些進程 -15 殺不死,就用 -9(SIGKILL). kill -9 <pid>

原创 Linux 文件鎖與 inode

1. 進程 A 排他鎖住某文件之後,進程 B 可以修改該文件,但不能鎖住該文件。 2. 進程 A 排他鎖住某文件之後,進程 B 修改該文件之後,因爲文件 inode 沒有改變,所以依然不能鎖住該文件。 3. 進程 A 排他鎖住某文件之後,

原创 mutex 測試程序

這段程序使用了 C++ 11 中的線程庫(注意:編譯時請不要加 -O 優化選項,否則空循環會被優化掉): g++ -std=c++14 -Wall -pedantic -pthread main.cpp && ./a.out// mute

原创 常見 core dump 原因分析signal 11 - SIGSEGV

signal 6 - SIGABRT free 多次 char *p = malloc(100); free(p); free(p); fclose 多次 // fclose 內部調用 free FILE *fp = fopen("te