Time of Update: 2018-12-08
有的時候,我們需要在一個基礎中同時運行多個控制流程程。例如:一個圖形介面的下載軟體,在處理下載任務的同時,還必須響應介面的對任務的停止,刪除等控制操作。這個時候就需要用到線程來實現並行作業。和訊號處理函數的控制在處理完訊號之後就結束不同的時,而多線程的控制流程程可以長期並存,作業系統會在各線程之間調度和切換,就像在多個進程之間調度和切換一樣,但建立線程開銷要比進程小得多。因此,線程往往也被稱作輕量級的進程。由於同一進程的多個線程共用同一地址空間,資料區段是共用的,如果定義一個全域變數,在各線程中
Time of Update: 2018-12-08
啟動GDB後,首先就是要設定斷點,程式中斷後才能調試。在gdb中,斷點通常有三種形式:斷點(BreakPoint): 在代碼的指定位置中斷,這個是我們用得最多的一種。設定斷點的命令是break,它通常有如下方式:break <function> 在進入指定函數時停住break <linenum> 在指定行號停住。break +/-offset 在當前行號的前面或後面的offset行停住。offiset為自然數。break
Time of Update: 2018-12-08
傳統方式下,庫函數的連結是在編譯器完成的,所有相關對象在編譯的時候被整合成一個可執行檔。與此相比,我們也可以把對庫函數的連結載入延遲到程式啟動並執行時期,也就是我們所稱作的動態連結。動態連結的優點
Time of Update: 2018-12-08
Linux下的Socket編程大體上包括Tcp Socket、Udp Socket即Raw Socket這三種,其中TCP和UDP方式的Socket編程用於編寫應用程式層的socket程式,是我們用得比較多的,而Raw Socket則用得相對較少,不在本文介紹範圍之列。TCP Socket基於TCP協議的用戶端/伺服器程式的一般流程一般如下:它基本上可以分為三個部分:一、建立串連:
Time of Update: 2018-12-08
調試是開發過程中一項不可或缺的工作,在Linux編程中,通常使用gdb來調試我們的c/c++程式,由於gdb可介紹的東西比較多,這裡將分幾篇文章介紹,網上有篇文章介紹的非常詳細,值得收藏:用GDB偵錯工具(一)、(二)、(三)、(四)、(五)、(六)、(七)。 前期準備 在程式編譯的時候,函數名、變數名會被相應的記憶體位址所代替,但這些記憶體位址對於我們來說是不可讀的。我們往往需要需要根據函數名、變數名來尋找實際的地址,從而讀取其值。
Time of Update: 2018-12-08
好幾年沒有接觸Linux環境下編程了,好多東西都有點生疏了。趁著現在有空打算把相關的一些技能重拾一下,順手寫一些相關的文章加深印象。因為不是寫書,也受到許多外部因素限制,可能介紹不會很系統和詳細,不過大都是一些基礎知識,對於新手入門應該還是有點協助的(因為我也相當於重學嘛^_^),感興趣的朋友可以看一下:相關文章如下(持續更新中):Linux編程簡介——VILinux編程簡介——gccLinux編程簡介——靜態連結庫Linux編程簡介——動態連結程式庫Linux編程簡介——MakefileLin
Time of Update: 2018-12-08
前面我們已經介紹過了如何通過gcc編譯代碼組建檔案,但是,當項目較多的時候,往往則需要一個自動化的編譯工具輔助我們完成這項操作。像Windows那樣通過Ctrl+F5即可一鍵完成項目所有編譯工作。Makefile文法基礎 在Linux下,自動化編譯工具是通過make命令來完成的(一些工具廠商也提供了它們自己的make命令,如gmake等),make命令的基本格式如下: make [-f makefile]
Time of Update: 2018-12-08
基本概念訊號在Linux中是一個比較常見的概念,例如我們按Ctrl+C中斷前台進程,通過Kill命令結束進程都是通過訊號實現的。下面就以Ctrl+C為例簡單的說明訊號的處理流程:使用者按下Ctrl-C,這個鍵盤輸入產生一個硬體中斷。 該進程的使用者空間代碼暫停執行,CPU從使用者態切換到核心態處理硬體中斷。 終端驅動程式將Ctrl-C解釋成一個SIGINT訊號,記在該進程的PCB中(也可以說發送了一個SIGINT訊號給該進程)。
Time of Update: 2018-12-08
查看棧資訊 當程式被停住了,首先要確認的就是程式是在哪兒被斷住的。這個一般是通過查看調用棧資訊來看的。在gdb中,查看調用棧的命令是backtrace,可以簡寫為bt。 (gdb) bt #0 pop () at stack.c:10 #1 0x080484a6 in main () at main.c:12也可以通過info stack命令實作類別似的功能(我更喜歡這個命令): (gdb) info stack #0 pop () at stack.c:10
Time of Update: 2018-12-08
緩衝I/O和非緩衝I/O
Time of Update: 2018-12-08
下面是碧水軒寫的關於在Fedora Linux下安裝MapGuide OpenSource 2.0的文章,在這裡轉帖一下,希望對使用Linux版MapGuide OpenSource的童鞋們有協助。 對於AIMS的Linux安裝可以參考在Linux上安裝Autodesk Infrastructure Map Server
Time of Update: 2018-12-08
(未完成)基礎情境因為工作需要一台新的研發專用的伺服器,需要跑一些研發用的服務,比如subversion, bugzilla, mediawiki,
Time of Update: 2018-12-08
文章目錄
Time of Update: 2018-12-08
文章目錄
Time of Update: 2018-12-08
由於原書是英文的,因而筆記是英文的,大家敬請諒解吧。1. Getting Startedhttp://www.cnblogs.com/forfuture1978/archive/2010/02/11/1667457.html2. Writing Good GNU/Linux Softwarehttp://www.cnblogs.com/forfuture1978/archive/2010/02/11/1667458.html3.
Time of Update: 2018-12-08
經常需要Kill多個進程,這些進程包含共同的關鍵字,可以用一條命令Kill掉它們。ps aux | grep "common" | cut –c 9-15 | xargs kill –9管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入。下面說說用管道符聯結起來的幾個命令:"ps aux" 查看所有進程的命令。這時檢索出的進程將作為下一條命令grep "common"的輸入。"grep "common" 選出所有含有關鍵字"common"的進程。"cut -c 9-1
Time of Update: 2018-12-08
文章目錄 3.1.1. Using system3.1.2. Using fork and exec 3. ProcessesEach process is identified by its unique process ID Every process has a parent process. Processes are arranged in a tree, with the init process at its root
Time of Update: 2018-12-08
文章目錄 1.1.1. Create the source code files1.1.2. Compiling a Single Source File1.1.3. Linking Object Files1.3.1. Compiling with Debugging Information1.3.2. Running GDB 1. Getting Started1.1. Compiling with GCC1.1.1. Create
Time of Update: 2018-12-08
Technorati 標籤: windows,linux,命令喜歡Linux上的命令列工具,如grep, tail, 想要在Windows上使用他們,可以通過cygwin,mingw實現我的願望。但有時嫌他們有點重,最好是有移植到Windows平台上的命令,幸好被我找到一個:http://unxutils.sourceforge.net/下載下來,解壓後,把解壓後的目錄設在windows的系統路徑中(我的電腦 > 右鍵屬性 > 進階 > 環境變數 > 系統變數 >
Time of Update: 2018-12-08
先說一句:這個方法做完以後,還要修改udev檔案的。My Phone是華為C8812,adb無論如何也連不上,總是顯示:List of devices attached ???????????? device雖然可以使用adb shell,但是eclipse根本使用不了。而網路上所有的方法都不能讓它不再顯示亂碼。據說這個問題並不是android的問題,而是華為手機的問題。終於找到了一個方法,對大部分的華為應該是可行的(華為C8812可行):原網址 的第10樓問題找到了,以C8812為例撥號: