鸠鸠不会编程
这个作者很懒,什么都没留下…
展开
-
5.3Socket服务器与客户端信息交互
Socket服务器与客户端代码演示:简易的服务器代码演示:服务器读取客户端一次消息制作客户端代码演示:简易的服务器#include <stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>int main(){ int s_fd原创 2021-09-25 15:27:04 · 47 阅读 · 0 评论 -
5.2Socket的API简介
Sockett的API简介Socket编程步骤Socket的API介绍socket()bind()地址转换listen()aceept()connect()Socket编程步骤TCP服务器1.socket() 创建套接字2.bind() 套接字里面添加IP地址和端口号3.listen() 监听客户端的连接而4.aceept() 接收客户端接入5.read()与write() 数据交互6.close() 关闭服务器TCP客户端1.socket() 创建套接字2.connect() 连接原创 2021-09-01 22:07:13 · 50 阅读 · 0 评论 -
5.1网络编程概述
网络编程概述进程间的通信方式的缺点TCP与UDP端口号字节序进程间的通信方式的缺点管道、消息队列、共享内存、信号、信号量 特点:都是依赖于内核缺陷:无法实现多机通讯需要通过网络,服务器与多客户端的通信TCP与UDPTCP协议与UDP协议都是传输层的协议1.TCP面向连接:如打电话,建立拨号连接 UDP面向不连接:如发短信,接收者不知是否已经阅读2.TCP提供可靠的服务:无差错,不丢失,不重复,且是按顺序达到 UDP尽最大努力交付,无法保证可靠交付3.TCP面向字节流:把数据看成一串无结原创 2021-09-01 18:31:04 · 50 阅读 · 0 评论 -
4.4线程条件控制,限制线程同步
线程条件控制,限制线程同步条件的原型供参考:Linux多线程编程初探条件的原型创建条件变量:int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);销毁条件变量:int pthread_cond_destroy(pthread_cond_t *cond);等待:int pthread_cond_wait(pthread_cond_t *restrict cond, p原创 2021-09-01 14:12:14 · 72 阅读 · 0 评论 -
4.3线程同步之互斥量加锁解锁
线程同步之互斥量加锁解锁原型代码演示:互斥锁的基本使用代码演示:互斥锁限制共享内存的访问供参考:Linux多线程编程初探原型创建互斥锁:int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);销毁互斥锁:int pthread_mutex_destroy(pthread_mutex_t *mutex);加锁:int pthread_mutex_lock(pth原创 2021-08-30 17:28:18 · 73 阅读 · 0 评论 -
4.2线程的创建、等待、退出、获取ID 线程的共享内存
线程的创建、等待、退出线程的原型代码演示:线程的创建、等待、退出、获取ID学习总结供参考:Linux多线程编程初探线程的原型线程创建:int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg);线程退出:int pthread_exit(void *rval_ptr);线程等待:int pthread_join(pthread_t thread, void **r原创 2021-08-19 21:54:54 · 106 阅读 · 0 评论 -
4.1线程的优点、线程与进程的差异性
线程的优缺点、线程与进程的差异性线程的优点进程与线程的区别供参考:Linux多线程编程初探线程的优点1.线程是个"节俭"的多任务操作方式:切换效率远远快于进程2.线程的通信方式:数据共享3.多个线程不会分配很多内存,省空间进程与线程的区别参考文献:进程与线程的区别...原创 2021-08-17 20:00:32 · 43 阅读 · 0 评论 -
3.5信号量
信号量原型信号量(semaphore)与已经介绍过的 IPC 结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。临界资源:很多资源一次只能供一个进程使用。一次仅允许一个进程使用的资源称为临界资源规定:进入实验室必须持有钥匙,且一人一把信号量集:一个实验室门口放有多把钥匙进入实验室,就要在门口领取钥匙(临界资源的情况:当门口只有一把钥匙,有多人想进入实验室,必须持有钥匙的进入,未持钥匙的在门外排队等待 )pv操作p操作 拿着钥匙进入实验室v操作 放原创 2021-08-17 19:37:46 · 42 阅读 · 0 评论 -
3.4Linux 信号
Linux 信号代码演示:signal配合 终端killl 指令代码演示:signal配合 自制指令SIG_IGN(忽略信号)供参考:Linux 信号(signal)查看系统名称以及序号:kill -l信号处理的三种方式:忽略、捕捉和默认动作忽略动作:对 SIGKILL 和 SIGSTOP 无效捕捉动作:用户将信号告诉内核默认动作:由默认的处理动作,自动执行./a.out程序是个死循环,通过终端 kill 命令发送信号,将进程终止代码演示:signal配合 终端killl 指令//S原创 2021-08-16 23:07:59 · 68 阅读 · 0 评论 -
3.3共享内存
共享内存共享内存原型代码演示:共享内存学习总结共享内存原型int shmget(key_t key, size_t size, int shmflg);//创建共享内存,失败返回-1;成功返回shmidvoid *shmat(int shmid, const void *shmaddr, int shmflg);//挂接共享内存,失败返回-1int shmdt(const void *shmaddr);// 断开共享内存,失败返回-1int shmctl(int shmid, int原创 2021-08-16 20:17:31 · 49 阅读 · 0 评论 -
3.2消息队列
消息队列消息队列特点原型代码演示学习总结消息队列消息队列:消息的链接表,存放在内核中。特点a.消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级(消息中用各种各样的类型,int,char等等)b.消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除(Linux内核中的内容不会由进程终止而删除)c.消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取(消息是个链表,读取更加的灵活)原型int msgget(key_t k原创 2021-08-16 15:59:38 · 88 阅读 · 0 评论 -
3.1无名管道、命名管道
无名管道、命名管道无名管道(pipe)特点原型代码演示:无名管道(pipe)命名管道无名管道(pipe)特点a.统一时间下,数据传送是单向的(要么读,要么写,二者不可得兼)b.它只能用于具有父子关系的进程之间的通信c.通信时,管道建立在内存中。当父子进程退出,管道内的数据删除原型#include <unistd.h>int pipe(int fd[2]); 返回值:若成功返回0,失败返回-1fd返回两个文件描述符:fd[0] 为读而打开,fd[1] 为写而打开。原创 2021-08-15 14:31:37 · 204 阅读 · 0 评论 -
2.6exec族函数
exec族函数execl的原型execl的原型int execl(const char *path, const char *arg, ...);path:可执行文件的路径名字arg: 可执行程序的所带的参数,可以是多个参数,没有带路径且arg必须以NULL结束 返回值:若出错,可设置errno并返回-1;若成功,不返回//文件execl.c#include <stdio.h>#include <stdlib.h>#include <unistd.h&g原创 2021-08-14 12:43:00 · 131 阅读 · 0 评论 -
2.5进程退出+函数wait+函数waitpid+孤儿进程
进程退出的相关概念父进程等待子进程退出函数wait解析函数wait的代码演示函数waitpid解析函数waitpid的代码演示孤儿进程代码演示:孤儿进程退出的相关概念正常终止1.在main函数内执行return2.调用exit函数3.调用_exit或_EXIT函数4.进程的最后一个线程在其启动例程中执行return5.进程的最后一个线程调用pthread_exit异常退出1.调用abort,它会产生SIGABRT信号2.当进程接收到某些信号,ctrl+c3.最后一个线程对“取消”请原创 2021-08-13 21:46:05 · 92 阅读 · 0 评论 -
2.4函数vfork的详解+僵尸进程
函数vfork函数vfork的特点函数vfork的代码演示函数vfork的特点vfork函数的返回值与fork函数相同一:vfork保证子进程先运行,当子进程调用exit或exec后,父进程才会恢复执行二:vfork直接使用父进程存储空间,不拷贝;父子进程共享地址空间函数vfork的代码演示#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(){ pi原创 2021-08-13 17:50:42 · 414 阅读 · 0 评论 -
2.3函数fork的两种用法 +函数system的使用+函数popen
函数fork的两种用法fork以下的两种用法代码演示:假设客户端请求服务器fork以下的两种用法代码演示:假设客户端请求服务器#include <stdio.h>#include <unistd.h>int main(){ pid_t pid; int data; while(1) //while的作用:不断的获取客户端的请求 { printf1("ple原创 2021-08-13 14:33:01 · 259 阅读 · 0 评论 -
2.2函数fork的详解
fork函数的详解fork()概述通过父子进程的ID,区分父与子通过父子进程的返回值,区分父与子fork()概述#include <unistd.h>pid_t fork(void);一个现有的进程可以调用fork函数创建一个新进程。 返回值:子进程返回0,父进程返回自己的ID;若出错,返回-1getpid() 获取当前进程IDgetppid() 获取父进程ID通过父子进程的ID,区分父与子#include <stdio.h>#include &l原创 2021-08-13 12:57:39 · 57 阅读 · 0 评论 -
2.1进程相关的概念
1.进程概述什么是程序???什么是进程???有何区别???a.程序是静态的概念。例:gcc xxx.c -o pro,磁盘中生成pro文件;桌面的快捷键都是程序b.进程是动态的概念。程序的一次运行活动如何查看系统中有哪些进程???a.使用ps指令查看,实际工作中,使用grep来查看文件是否存在某一个进程,ps -aux|grep xxxx(在Ubuntu下,ps -aux指令查看所有包含其他使用者的进程)b.使用top指令,相当于Windows的任务管理器(动态显示CPU利用率、内存利用原创 2021-08-12 21:28:21 · 105 阅读 · 0 评论 -
1.4标准C库文件操作
open与fopen的区别a.来源性open函数是UNIX系统调用函数(包括Linux),返回的是文件描述符fopen函数是标准C语言库,在不同的系统中调用不同的API(个人理解:fopen仅需调用 #include <stdio.h>就OK了)b.移植性fopen函数是C标准函数,具有良好的移植性;open函数移植性有限fopen函数在Windows系统下可以正常运行,而open函数只能使用Windows系统下类似的功能API函数“CreatFile”c.适用范围open函数在原创 2021-08-12 20:55:57 · 120 阅读 · 0 评论 -
1.3写入一个整型数、一个或多个结构体数组
写入一个整型数#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include <stdio.h>int main(){ int fd; int data1=100; int data2; fd = open("./file",O_RDWR);原创 2021-08-12 17:10:45 · 89 阅读 · 0 评论 -
1.2文件操作(arg的参数认识、cp、修改配置)
文件操作arg的参数认识cp思路 (cp src.c des.c)代码演示:cp修改配置思路代码演示:修改配置arg的参数认识#include <stdio.h>int main(int argc,char **argv){ printf("totol params %d\n",argc); printf("NO.1 params %s\n",argv[0]); printf("NO.2 params %s\n",argv[1]);原创 2021-08-12 15:31:16 · 329 阅读 · 0 评论 -
1.1 文件操作(open、write、read、lseek、文件描述符)
文件操作open函数的基本认识打开和创建 函数的使用write函数的基本认识写入 函数的使用read函数的基本认识读取 函数的使用lseek函数的基本认识光标 函数的使用补充:利用光标计算计算文件大小open函数的基本认识打开和创建 函数的使用#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdio.h>int main(){ i原创 2021-08-11 19:08:52 · 936 阅读 · 0 评论