原创 linux__mutex互斥鎖___操作

[html] view plaincopy mutex是死等鎖,即pthread_mutex_lock(&mutex);這條語句在執行的後,做兩步,1,先判斷當前是否可以鎖,如別的線程在鎖住,這裏就一直等待直到別的線程

原创 pthread_mutex_init() -- 互斥鎖初始化|pthread_mutex_destroy()--互斥鎖銷燬

原型: #include <pthread.h>int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restric

原创 system函數調用

相關函數  fork,execve,waitpid,popen  表頭文件  #include<stdlib.h>  定義函數  int system(const char * string);  函數說明  system()

原创 C語言system()函數

system()函數功能強大,很多人用卻對它的原理知之甚少先看linux版system函數的源碼: #include <sys/types.h> #include <sys/wait.h> #include <errno.h> #i

原创 atexit函數

很多時候我們需要在程序退出的時候做一些諸如釋放資源的操作,但程序退出的方式有很多種,比如main()函數運行結束、在程序的某個地方用exit() 結束程序、用戶通過Ctrl+C或Ctrl+break操作來終止程序等等,因此需要有一種與程

原创 Linux kernel 內存屏障在RCU上的應用

內存屏障主要解決的問題是編譯器的優化和CPU的亂序執行。   編譯器在優化的時候,生成的彙編指令可能和c語言程序的執行順序不一樣,在需要程序嚴格按照c語言順序執行時,需要顯式的告訴編譯不需要優化,這在linux下是通過barrier

原创 使用tcgetattr函數與tcsetattr函數控制終端

6.4.4  使用tcgetattr函數與tcsetattr函數控制終端 爲了便於通過程序來獲得和修改終端參數,Linux還提供了tcgetattr函數和tcsetattr函數。tcgetattr用於獲取終端的相關參數,而tcse

原创 vi編輯器常用命令

  vi編輯器有3種模式:命令模式、輸入模式、末行模式。掌握這三種模式十分重要: 1.命令模式:vi啓動後默認進入的是命令模式,從這個模式使用命令可以切換到另外兩種模式,同時無論在任何模式下只要按一下[Esc]鍵都可以返回命令模式。

原创 Linux內核部件分析之連通世界的list

轉自:http://www.linuxidc.com/Linux/2011-10/44627.htm 在linux內核中,有一種通用的雙向循環鏈表,構成了各種隊列的基礎。鏈表的結構定義和相關函數均在include/linux/list.

原创 strrchr函數

函數簡介 函數名稱: strrchr 函數原型:char *strrchr(const char *str, char c); 所屬庫: string.h 函數功能:查找一個字符c在另一個字符串str中末次出現的位置(也就是從s

原创 Linux 的cp命令

功能: 複製文件或目錄 說明: cp指令用於複製文件或目錄,如同時指定兩個以上的文件或目錄,且最後的目的地是一個已經存在的目錄,則它會把前面指定的所有文件或目錄複製到此目錄中。若同時指定多個文件或目錄,而最後的目的地並非一個已存在的目錄

原创 IP地址轉換、主機大小端、htonl、ntohl實現

[cpp] view plaincopy #include <IOSTREAM>   //#include <WINSOCK.H>   using namespace std;      typedef unsigne

原创 QT QString, wchar_t *, TCHAR, CString和其他字符或字符串類型的轉化

[cpp] view plaincopy //QString to wchar_t *:   const wchar_t * encodedName = reinterpret_cast<const wchar_t

原创 TCP、UDP協議詳解

</pre></h1><div class="postBody"><div id="cnblogs_post_body"><pre id="best-answer-content" class="reply-text mb10" n

原创 gcc的內建函數__builtin_expect

1.問題引出 在內核代碼的條件分支中的判斷中,經常可以看到如下兩條語句: [cpp] view plaincopy /* ...... */  if(unlikely(!something))  /* ...... */  if