原创 客戶端

struct.h #ifndef _STRUCT_H_//客戶端頭文件 #define _STRUCT_H_ #include <stdio.h> #include <stdlib.h> #include <string.h> #incl

原创 服務器端

struct.h   #ifndef _STRUCT_H_//服務器端頭文件 #define _STRUCT_H_ #include <stdio.h> #include <stdlib.h> #include <string.h> #i

原创 進程間通信(一)

爲什麼進程間要通信? 1、 數據傳輸 2、 資源共享 3、 通知事件 4、 進程控制 進程間通信方式: 管道通信、 共享內存、 消息隊列、 信號通信、 一、管道通信 管道是單向的、先進先出的,它把一個進程的輸出

原创 多線程編程

線程 線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬於一個進程的其他的線程共享進程

原创 進程間通信(二)

三、消息隊列 消息隊列是隨內核持續,只有在內核重啓或者人工刪除時,該消息隊列纔會被刪除 ①獲取鍵值 消息隊列的內核持續性要求每個消息隊列都在系統範圍內對應唯一的鍵值,所以,要獲得一個消息隊列的描述符,必須提供該消息隊列的鍵值。 #in

原创 Linux網絡編程(一)

Socket Linux中的網絡編程通過Socket(套接字)接口實現,Socket是一種文件描述符 套接字socket有三種類型: ①流式套接字(SOCK_STREAM) 流式的套接字可以提供可靠的、面向連接的通訊流。它使用了TC

原创 進程控制(二)進程控制編程

獲取ID #include <sys/types.h> #include <unistd.h> 獲取本進程ID pid_t getpid(void) 獲取父進程ID pid_t getppid(void) 進程創建fork() #i

原创 C語言筆試練習(二)

1、編寫代碼,移除未排序鏈表中的重複結點 #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct node { int data;

原创 字符串訓練——求字符串長度、去掉空格

1、求字符串的長度 int main() { char str[100] = "hello world"; int len = 0; #if 0 int i; for (i = 0; i < 100; i+

原创 字符串訓練——判斷迴文字符串、逆序、單詞逆序、中文逆序

1、寫一函數int fun(char *p)判斷一字符串是否爲迴文,是返回1,不是返回0,出錯返回-1 迴文字符串:abcdefgfedcba #include <stdio.h> int fun(char *p) { if (

原创 Linux 文件系統編程

系統調用(System Call): 所有的操作系統都提供多種服務的入口點,程序由此向內核請求服務。這些可直接進入內核的入口點被稱爲系統調用。 爲什麼用戶程序不能直接訪問內核提供的服務? 在Linux中,爲了更好地保護內核空間,程序的

原创 字符串練習——識別合法幀

輸入一個字符串,同時輸入幀頭和幀尾(可以是多個字符),將該字符串中合法的幀識別出來。 提示:幀頭和幀尾分別是head和tail 。字符串 ”asdheadhauboisoktail”中headhauboisoktail是合法幀 #inc

原创 C語言筆試練習(一)

1、編寫一個方法,將字符的空格全部替換爲%20。假設該字符的尾部有足夠的空間存放新增字符,並且知道字符串的真實長度。 輸入:“Mr John Smith” 輸出:“Mr%20John%20Smith” #include <iostre

原创 賣票系統

用各種方法實現賣票系統。 一、利用共享內存 #include <stdio.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/types.h> #include <str

原创 從一個字符數組中讀出相應的整數、實數

#include <stdio.h> #include <string.h> void my_seek(char *str,int a[],float b[]) { int i = 0;