Time of Update: 2018-12-05
在Linux中,如果要讓進程在後台運行,一般情況下,我們在命令後面加上&即可,實際上,這樣是將命令放入到一個作業隊列中了:[root@localhost /]# ./test.sh &[1] 17208然後我們就可以用以下命令進行查看:[root@localhost /]# jobs -l[1] 17208 Running ./test.sh &對於已經在前台執行的命令,也可以重新放到後台執行首先按ctrl
Time of Update: 2018-12-05
線程資料處理 之 線程資料 為了保護變數,我們必須使用訊號量、互斥等方法來保證我們對變數的正確使用。1) 線程資料在單線程的程式裡,有兩種基本的資料:全域變數和局部變數。但在多線程程式裡,還有第三種資料類型:線程資料(TSD: Thread-Specific Data)。它和全域變數很象,線上程內部,各個函數可以象使用全域變數一樣調用它,但它對線程外部的其它線程是不可見的.線程儲存的具體用法建立一個類型為 pthread_key_t 類型的變數。 調用
Time of Update: 2018-12-05
分析核心(core)檔案 在程式發生崩潰時,有時可能無法直接運行GDB來進行調試。比如程式可能是在另外一台機器上啟動並執行,或者因為程式對時間比較敏感,所以手動跟蹤調試會產生無法接受的延遲等。遇到這些情況,就只能等到程式運行結束後才能判斷崩潰的原因了。這時需要用到Linux提供的core
Time of Update: 2018-12-05
一、死結(1)
Time of Update: 2018-12-05
在浩瀚的Linux中,尋找某個檔案是件非常要命的事兒。我試過很多方法,最簡單、最方便的一種是利用locate命令和updatedb命令配合的方法: 比如,我們要尋找一個檔案名稱中帶“chen”字串的檔案,這樣做: [root@locahost /]# locate chen 這樣就能出現一大串蘊含chen字串檔案名稱的檔案。 注意,locate執行後的結果不一定準確,有可能最近的一段時間內其他使用者添加了或刪除了某個喊“chen”的檔案,沒關係,執行: [root@locahost /]#
Time of Update: 2018-12-05
跟訊息佇列一樣,共用記憶體也有自己的資料結構,如下:struct shmid_ds {struct ipc_perm shm_perm; /* Ownership and permissions */size_t shm_segsz; /* Size of segment (bytes) */time_t shm_atime; /* Last attach time */time_t shm_dtime; /* Last detach time
Time of Update: 2018-12-05
一、我們在前面講處理序間通訊的時候提到過進程互斥的概念,下面寫個程式來類比一下,程式流程如:即父進程列印字元O,子進程列印字元X,每次列印一個字元後要sleep 一下,這裡要示範的效果是,在列印程式的邊界有PV操作,故每個進程中間sleep 的時間即使時間片輪轉到另一進程,由於資源不可用也不會穿插輸出其他字元,也就是說O或者X字元都會是成對出現的,如OOXXOOOOXXXXXXOO....程式如下: C++ Code 123456789101112131415161718192021222324
Time of Update: 2018-12-05
一、順序程式與並發程式特徵順序程式特徵順序性封閉性:(運行環境的封閉性)確定性可再現性並發程式特徵共用性並發性隨機性二、進程互斥1、由於各進程要求共用資源,而且有些資源需要互斥使用,因此各進程間競爭使用這些資源,進程的這種關係為進程的互斥2、系統中某些資源一次只允許一個進程使用,稱這樣的資源為臨界資源或互斥資源。3、在進程中涉及到互斥資源的程式段叫臨界區舉例如:假設x = 1;
Time of Update: 2018-12-05
一、posix
Time of Update: 2018-12-05
一、posix 條件變數一種線程間同步的情形:線程A需要等某個條件成立才能繼續往下執行,現在這個條件不成立,線程A就阻塞等待,而線程B在執行過程中使這個條件成立了,就喚醒線程A繼續執行。在pthread庫中通過條件變數(Condition Variable)來阻塞等待一個條件,或者喚醒等待這個條件的線程。Condition Variable用pthread_cond_t類型的變數表示,和Mutex的初始化和銷毀類似,pthread_cond_init函數初始化一個Condition
Time of Update: 2018-12-05
一、什麼是進程從使用者的角度來看進程是程式的一次執行過程。從作業系統的核心來看,進程是作業系統分配的記憶體、CPU時間片等資源的基本單位。進程是資源分派的最小單位。每一個進程都有自己獨立的地址空間與執行狀態。像UNIX這樣的多任務作業系統能夠讓許多程式同時運行,每一個運行著的程式就構成了一個進程。二、進程資料結構進程的靜態描述:由三部分組成:PCB、有關程式段和該程式段對其進行操作的資料結構集。進程式控制制塊:用於描述進程情況及控制進程運行所需的全部資訊。程式碼片段:是進程中能被進程發送器在CP
Time of Update: 2018-12-05
一、核心如何?訊號的捕捉如果訊號的處理動作是使用者自訂函數,在訊號遞達時就調用這個函數,這稱為捕捉訊號。由於訊號處理函數的代碼是在使用者空間的,處理過程比較複雜,舉例如下:1. 使用者程式註冊了SIGQUIT訊號的處理函數sighandler。2. 當前正在執行main函數,這時發生中斷或異常切換到核心態。3. 在中斷處理完畢後要返回使用者態的main函數之前檢查到有訊號SIGQUIT遞達。4.
Time of Update: 2018-12-05
n建立符號連結的時候一定要使用絕對路徑,例如:/usr/local/cxxt/config-tools需要建立到 /usr/bin/config-tools如果你目前的目錄在 cxxt目錄下, 執行ln -s ./config-tools /usr/bin/config-tools這時候運行 config-tools符號串連的層數過多使用ln 命令使用絕對路徑就可以了ln -s /usr/local/cxxt/config-tools /usr/bin/config-tools ln 命令用途
Time of Update: 2018-12-05
線程:是在某個進程中被建立的,而它達到生命週期都在這個進程中。線程它允許一個進程執行一個或多個執行路徑(即1個進程可以有多個線程,來執行不同的程式),這些執行路徑由系統非同步調度。進程有自己的資料區段,程式碼片段,堆棧段。而線程與進程的區別:1. 程式碼片段一樣2.資料區段一樣(全域變數)。3.棧堆段不一樣!!!!!建立線程的函數:#include<pthread.h>int pthread_create(pthread_t*thread,pthread_attr_t
Time of Update: 2018-12-05
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<pthread.h>int arr[]={67,45,7,348,60,4,87,2,3,5};int g_i=0;pthread_t thread[2];pthread_mutex_t mutex_1,mutex_2;//互斥鎖void print_arry()//列印數組{ int i=0;
Time of Update: 2018-12-05
Linux 進程間通訊方式有以下幾種:1-》管道(pipe)和有名管道(fifo).2-》訊息佇列3-》共用記憶體4-》訊號量5-》訊號(signal)6-》通訊端(sicket)在這裡我們看一下第一種====管道(pipe)。有名管道(fifo)見其它文章。eg :我們以前學的命令 cat file | grep "abc" > file2在我看來 我們把cat 讀取file中的內容讀到記憶體在通過過濾命令grep 過濾出包含"abc"的記錄
Time of Update: 2018-12-05
接下來我們看一下線程退出函數和等待函數。 #include <pthread.h> void pthread_exit(void *value_ptr);value_ptr:是線程的傳回值。有pthread_join()檢測獲得。功能:線程退出#include<pthread.h> int pthread_join(pthread_t thread, void**value_ptr);功能:等待指定的線程結束。傳回值:成功返回0參數:thread:
Time of Update: 2018-12-05
線程同步:線程的同步需要用到互斥量(mutex)用pthread_mutex_t類型表示。互斥量(mutex)是一種簡單的加鎖的方法來控制對關心資源的訪問。在同一時間只有一個線程掌握某個互斥上的鎖,擁有鎖的線程可以對共用資源進行訪問。如其它線程希望上鎖一個已經被上了的互斥鎖的資源。則該線程被掛起,知道擁有這把鎖的線程釋放鎖為止。用到的函數 #include <pthread.h> int
Time of Update: 2018-12-05
Linux 進程間通訊(IPC)方式有以下幾種:1-》管道(pipe)和有名管道(fifo).2-》訊息佇列3-》共用記憶體4-》訊號量5-》訊號(signal)6-》通訊端(sicket)在這裡我們看一下第3種====共用記憶體(share memory )。其它通訊方式見其它文章。顧名思義:共用記憶體就是兩個或多個進程共用一塊記憶體地區。這種通訊方式允許兩個不相關的進程能夠訪問處理同一塊記憶體地區。從而達到進程間資料的交換和處理等。在這些進行通訊方式中,共用記憶體是一種非常高效的通訊方式,
Time of Update: 2018-12-05
/*在此只付上標頭檔,如需要去我的資源下載。 http://download.csdn.net/detail/ta893115871/4322905O(∩_∩)O謝謝暫時實現的功能有:1.群聊2.私聊3.登陸驗證4.註冊5.所用的線上使用者6.退出7.管理員踢出某使用者8.管理員禁止某使用者聊天9.管理員提升某使用者為管理員10.管理員把某使用者降為普通使用者*//*Author QQ: 893115871Author Email:gfj19900401@163.com