原创 SIGNAL相關知識

在Linux定義的信號中,不能被忽略和捕獲的信號是哪兩個?這樣設計的目的是什麼? SIGKILL和SIGSTOP不能被忽略 原因:因爲它們向超級用戶提供了一種進程終止的可靠方法。 信號的產生的條件信號的產生的條件有哪些? 1.當用

原创 RDT可靠數據傳輸設計情景與設計原理以及性能優化

RDT可靠數據傳輸 目標:不錯,不丟,不亂 情景1:底層信道完全可靠 不會發生數據錯誤 不會丟棄分組 RDT設計: 只需目的端口與源端口,以及長度即可。 情景2:底層信道有數據錯誤 存在數據錯誤 不會丟棄分組

原创 Redis常見容器

Redis常見容器 簡單動態字符串 優勢: 嘗試複雜度獲取字符串長度 杜絕緩衝區溢出 減少修改字符串時帶來的內存重分配次數 空間預分配 惰性空間釋放 二進制安全(保存二進制文件) 兼容部分C字符串函數 鏈表 鏈表節點:

原创 管道通信習題

1.編程實現命名管道通信,進程a向進程b每隔3秒發送字符串”hello world” 實現思路: ​ 利用進程從管道讀數據時若沒有其他進程進行寫數據,那麼進程會阻塞這一原理。實現write進程只要定時(3s)向管道內寫數據,rea

原创 多進程編程習題

1.循環創建100個子進程 fork.c #include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <stdlib.h> int main(){

原创 進程狀態,守護進程,孤兒進程,殭屍進程,全緩衝/行緩衝

1.描述一下進程的三個狀態,以及相互轉換 就緒態:進程所需的資源已經全部準備好,等待系統調度進入執行態。 執行態:進程佔用CPU資源運行進程,進程運行結束或時間片用盡或缺少資源時會退出執行態 等待態:進程需要資源沒有全部就緒,進程

原创 動態庫的製作與鏈接

測試代碼: //zsw.h extern int add(int x, int y); extern int sub(int x, int y); //zsw.c int add(int x, int y){ retur

原创 IPC(進程間通信)——管道通信

1.什麼是進程間通信? ​ 進程是一個獨立的資源分配單元,不同進程之間的資源是獨立的,沒有關聯,不能在一個進程中直接訪問另一個進程的資源。 ​ 然而,進程不是孤立的,不同的進程需要進行信息的交互和狀態的傳遞登,因此需要進程間通信。

原创 使用C標準庫函數/Linux系統調用實現copy指令

#include<fcntl.h> #include<stdio.h> #include<unistd.h> #include<string.h> int main(int argc, char *argv[]){ i

原创 Linnux5.0.0下,基於Netlink與NetFilter對本機數據包進行篩選監控

Linnux5.0.0下,基於Netlink與NetFilter對本機數據包進行篩選監控 需求: 開發一個Linux lkm + app program,由app program提供需要監控的源IP地址,內核模塊根據此IP地址監控

原创 《C++ Primer》5th 課後練習 第八章 IO庫 1-10

練習8.1 編寫函數,接受一個istream&參數,返回值類型也是istream&。此函數須從給定流中讀取數據,直至遇到文件結束標識時停止。它將讀取的數據打印在標準輸出上。完成這些操作後,在返回流之前,對流進行復位,使其處於有效狀

原创 《C++ Primer》5th 課後練習 第八章 IO庫 11-14

練習8.11 本節的程序在外層while循環中定義了istringstream 對象。如果record 對象定義在循環之外,你需要對程序進行怎樣的修改?重寫程序,將record的定義移到while 循環之外,驗證你設想的修改方法是

原创 《C++ Primer》5th 課後練習 第五章 語句 1~10

練習5.1 什麼是空語句?什麼時候用空語句? 空語句是不做任何操作的語句,當語法上需要一條語句但是邏輯上不需要的時候,可以使用空語句。 練習5.2 什麼是塊?什麼時候會用到塊? 塊是指用花括號括起來的語句和聲明序列,當語法上需要一

原创 《C++ Primer》5th 課後練習 第四章 表達式 1~10

練習4.1 表達式 5 + 10 * 20 / 2 的求值結果是多少? 105 練習4.2 根據4.12節中的表,在下述表達式的合理位置添加括號,使得添加括號後運算對象的組合順序與添加括號前一致。 /*- (a)*/ *vec.b

原创 《C++ Primer》5th 課後練習 第七章 類 11~20

練習7.11 在你的Sales_data類中添加構造函數,然後編寫一段程序令其用到每個構造函數。 //Sale_data.h #pragma once #include <iostream> #include <string> u