原创 父子進程之間的共享資源

在現有的Linux內核在實現fork()函數時往往是一種"寫時賦值"的情況 父子之間的進程ID是不同的,其餘大部分資源都是被複制的     在下面的例子中可以看到,全局變量,局部變量,動態申請的變量都是複製的,互不影響 #include

原创 父子進程fork之後的一些注意點

fork()函數調用之後子進程從fork()語句之後開始執行,其原因是子進程複製了程序計數器 在剛剛fork之後父子進程之間的數據段(全局變量),棧段(局部變量),堆段(動態內存),代碼段,程序計數器等都是相同的(在當前的linux版本中

原创 leetcode109 c++

算法: 第一步找到鏈表的中點將其作爲根節點 第二步刪除中點將鏈表一分爲二 第三步遞歸上面的步驟 快慢指針得到鏈表的中點 ListNode* findMidNode(ListNode* head) { ListNode *slow,

原创 linux多進程拷貝文件

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #include <fcnt

原创 信號量---例子營業廳

用到的關鍵代碼 sem_t sem;//信號量 int sem_init(sem_t *sem,int pshared,unsigned,int value);//初始化由sem指向的信號量,設置它的共享選項,並給它一個初始的整數值。

原创 多進程併發服務器

父進程負責與客戶端建立鏈接,子進程負責通信 //TCPserve.c #include <stdio.h> #include <unistd.h> //linux標準頭文件,包含了各種linux系統服務函數原型和數據結構的定義 #i

原创 leetcode 743. 網絡延遲時間 c++

算法思路: 通過迪傑斯特拉最短路徑算法,求出從節點K出發到每一個節點的最短路徑。其中最大值的就是所求結果,若有節點從未被訪問過則返回-1。 class Solution { public: typedef struct Dest

原创 leetcode 113. 路徑總和 II c++

算法思路: 典型的遞歸算法,遞歸的回退條件 1.當前節點爲葉子節點並且路徑之和滿足條件 2.當前節點爲葉子節點並且路徑之和不滿足條件 在加入遞歸前判斷一下是否爲空節點,若爲空就無需進入遞歸,以免回退的處理操作太混亂 void pathS

原创 leetcode 105. 從前序與中序遍歷序列構造二叉樹 c++實現

算法思路: 前序:根左右 中序:左根右 根據前序和中序的特點可以得知,在前序遍歷中尋找根節點,在中序遍歷中將左右子樹分開。依次遞歸下去就可以構造一個二叉樹 以其中一次爲例: 若前序中的根節點位置在中序的長度爲len那麼遞歸如下 node

原创 使用wait函數回收子進程

進程一旦調用了wait函數,就立即阻塞週記,用wait自動分析是否當前的進程的某個子進程已經退出,如果讓它找到了這樣一個已經變成殭屍的子進程,wait就會收集這個子進程的消息,並把它徹底銷燬後返回;如果沒有找到這樣一個子進程,wait就會

原创 殭屍進程

殭屍進程---子進程已經退出,但是父進程並沒有調用wait或waitpid獲取子進程的狀態信息,那麼子進程的進程描述符仍然保存在系統中 int main() { /*fork一個子進程*/ pid_t pid = fork();

原创 vs+pthread配置

phtread庫的下載:ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip 在自己的項目中配置好對應的包含目錄以及庫目錄(下載文件的解壓路徑

原创 多線程出租車

有問題的實現-在出租車到達之後立馬觸發條件變量導致乘客白等 #include "pch.h" #include<stdio.h> #include <pthread.h> #include <windows.h> #include <i

原创 leetcode 92 反轉鏈表 II c++實現

分爲三步 用四個指針,分別指向反轉位置p,q以及第一個反轉元素的pre和最後一個元素的next 反轉p,q之間的元素 根據pre和next的情況來重新連接 ListNode* reverseBetween(ListNode* head,

原创 條件變量

爲了讓線程在等待滿足某些條件時使線程進入睡眠狀態,一旦條件滿足,就喚醒因等待滿足特定條件而睡眠的線程     關鍵代碼         條件變量的初始化 pthread_cond_t qready = PTHREAD_COND_INIT