char *p = strchr(buf, '\n');
通過在buf中查詢是否包含有'\n'
ps -a 檢視程序
execl("/usr/bin/gedit" , "gedit", "./execl.c", null);
引數一:執行檔案的路徑
引數二:要執行的檔名
引數三:檔案執行時的引數
最後乙個引數設定為null
程序的狀態 :就緒狀態,執行狀態,阻塞狀態
env 查詢系統環境變數
程序間的通訊:
無名管道只能用於具有親緣關係的程序間的通訊,建立無名管道的程序結束後,無名管道也被釋放了
有名管道
p開頭共享記憶體
建立一塊共享記憶體,程式結束後仍然存在
addr = shmat(shmid, null, 0);
引數二:null讓系統自動將共享記憶體關聯到程序合適位置
引數三:0表示讀寫
shm_rdonly:表示唯讀
沒有只寫
失敗:返回值為(void *)-1
取消關聯
shmdt(addr)
將資料拷貝到共享記憶體中
strcpy((char *)addr, pmsg);
sprintf((char*)addr, "%s", pmsg);
memcpy(addr, pmsg, strlen(pmsg));
將資料從共享記憶體中拷貝出來
strcpy(camsg, (char*)addr);
sscanf((char*)addr, "%s", camsg);
memcpy(camsg, addr, 64);
ipcs -m 檢視共享記憶體段
addr = mmap(null, 1024, prot_read|prot_write, map_shared, fd, 0);
null表示讓系統自動對映到記憶體的合適位置
munmap(addr, 1024);
map_failed --> (void *)-1
檔案對映
將檔案的一部分內容對映到記憶體空間,對記憶體的操作,自動更新到檔案中去
ipc 程序間通訊
訊號./a.out & 後台執行
kill -9 程序號 終止
kill -l 檢視kill
傳送訊號:
kill(getpid(),sigkill);
鬧鐘訊號:
alarm(5); //sigalrm:結束程式
重複會將之前的鬧鐘取消
sigkill和sigstop不能使用自己的處理方式來處理
ctrl+c: sigint
設定訊號的處理動作
signal(sigint, handle);
signal(sigint, sig_ign); sig_ign 忽略訊號
訊號的處理函式
void handle(int sig)
atoi 字串轉換為整型函式
執行緒:pthread_create
建立執行緒,即建立乙個併發執行的流程,該執行緒從屬於程序,不和程序分離
程序和執行緒間共享所有資源
執行緒鎖 --》互斥量
pthread_mutex_t promutex;
pthread_mutex_lock(&promutex);
pthread_mutex_unlock(&promutex);
將fullsem的值加一
通知所有阻塞等待fullsem的執行緒
sem_post(&fullsem);
sem_wait(&emptysem);
檢查指定訊號量的值,若值大於0,則表示有資源可用,將其值減一,往下執行;若值等於0,則表示沒有資源可用,則阻塞等待,直到有資源可用
聯合體:是一種自定義的資料型別
union semun
; 其整體長度為聯合體內最長的變數長度
學習第九天
怎麼沒有題面?我怎麼知道?換個鏈結吧!向洛谷勢力低頭 我們畫一下這個小螞蟻走出來的圖形,我們就會發現,是乙個類似長城的形狀 這個題,求最大值,我們應該能很容易想到用動態規劃 那麼對於乙個路徑圍成的圖形,我們需要描述的是它的位置和形狀,所以這顯然是個高維的dp 位置很好描述,但是形狀太複雜了,我們怎麼...
python學習 第九天
在下這廂有禮了 爬蟲簡單實現 coding utf 8 import urllib def gethtml url page urllib.urlopen url html page.read returnhtml html gethtml print html l urllib 模組提供了讀取we...
第九天學習日誌
學習日誌 蘇嵌專案實訓 姓名 梁軒齊 日期 2018.7.12 今日學習任務 行列式鍵盤輸入及led顯示 今日任務完成情況 基本完成,但除錯不出來 今日中發現問題彙總 寫 很吃力,基本框架可以寫出,但是,除錯不出來。今日未解決問題 除錯不出 今日開發收穫 學會了程式設計過程中的一些思路,可以進行一些...