LINUX系统编程
文章平均质量分 76
IPC通信协议
肖爱Kun
分享日常学习
展开
-
接上一篇,线程的取消pthread_cancel()、设置线程响应取消的状态pthread_setcancelstate()、设置线程取消的类型pthread_setcanceltype()
二、线程的取消。1、通过发送一个取消请求给线程,那么这个线程就会退出。 --> pthread_cancel() --> man 3 pthread_cancel功能: send a cancellation request to a thread //给一个线程发送取消请求使用格式: #include <pthread.h> int pthread_cancel(pthread_t thread);参数: threa...原创 2022-04-02 20:44:36 · 658 阅读 · 0 评论 -
sprintf和printf 用法的区别
printf()的作用是标准化输出,默认的对象是标准输出缓冲区,要有一定的条件才能把缓冲区里面的数据输出sprintf() 作用是格式化输出函数,保存字符串到缓冲区中,起到拼接字符串的作用功能: 函数sprintf()用来作格式化的输出。用法: #include <stdio.h> int sprintf(char *str, const char *format, ...);参数: str: 数据缓冲区...原创 2022-03-30 16:03:49 · 5499 阅读 · 0 评论 -
第二十九篇,signal()函数的具体用法,以及对信号集的操作,sigempty(),sigfillset(),sigaddset()等函数的用法,Linux的IPC对象,进程间消息队列通信的详细说明
一、研究signal函数的第二个参数。现实例子:假设将来收到"请我吃饭"这个信号,我就说好,一起去绿地。 --> 默认动作假设将来收到"请我吃饭"这个信号,我就打印helloworld。 --> 自定义动作假设将来收到"请我吃饭"这个信号,我理都不理你。 --> 信号忽略1、自定义动作。 (收到信号之后,想做什么事情,由你自己决定) the address of a programmer-defined function (a "signa...原创 2022-03-30 16:12:44 · 2933 阅读 · 0 评论 -
利用消息队列实现两个进程之间的通信
要求使用消息队列,实现两个进程之间的通信。写端程序分析:#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <stdio.h>#include <strings.h>#include <string.h>#include <stdlib.h>//写入数据的及结构体struct msgbuf{ long...原创 2022-03-30 23:25:04 · 2227 阅读 · 0 评论 -
接上一篇,线程的取消例程函数实现,取消例程函数 pthread_cleanup_push()在线程中删除线程取消例程函数pthread_cleanup_pop()
线程的取消例程函数pthread_cleanup_push()pthread_cleanup_pop()原创 2022-04-02 20:48:47 · 394 阅读 · 0 评论 -
第三十一篇,线程分离属性 pthread_attr_init()pthread_attr_setdetachstate() pthread_create()pthread_attr_destroy()
如何创建分离属性的线程 pthread_attr_init() pthread_attr_setdetachstate() pthread_create()pthread_attr_destroy()原创 2022-04-02 13:35:56 · 1902 阅读 · 0 评论 -
服务器和客户机实现通讯
用命名管道分别写一个服务器程序和客户机程序,客户机的的父进程负责每隔一秒产成一个子进程,(形成一个进程扇),而每个子进程则往自己的FIFO中写入自己的PID号码,服务器负责从FIFO中读取数据并打印在屏幕上。要求:用open函数处理重复创建问题使用access函数处理重复创建问题//客户机实例程序#include <stdio.h>#include <signal.h>#include <unistd.h>#include <stdlib.原创 2022-03-30 12:51:20 · 230 阅读 · 0 评论 -
第三十篇,进程之间的通讯方式——内存共享,内存互斥关系——信号量,Linux下的最小资源单位——线程的详细讲解
一、进程之间的通信方式 --- 共享内存。1、共享内存也是属于IPC对象,所以在使用共享内存之前一定要申请key值与ID号。2、共享内存作用机制以及使用范围。作用范围:由于共享内存是IPC对象,属于系统的资源,所以在整个系统中都可以看到IPC对象,其作用范围就是linux下任意的两个进程。机制:任意一个进程可以将数据发送到共享内存上,另外的进程就可以访问内存上的数据。3、实现共享内存的步骤:1)先申请key值 key = ftok(".",10);2)根据申请到的key值去申请...原创 2022-03-31 04:15:00 · 853 阅读 · 0 评论 -
第二十八篇,关于exec函数族函数接口, vfork() 函数的使用,研究vfork()父子进程的资源问题,进程之间的通信方式——无名管道,有名管道,信号的详细解答
一、exec函数族函数接口。1、什么是exec函数族?指的是一堆可以帮我们执行程序的函数接口。2、exec函数族函数接口作用?让一个新的程序替换到子进程,让新的程序作为子进程,PID号不会变。使用格式: #include <unistd.h> int execl(const char *path, const char *arg, .../* (char *) NULL */); int execlp(const char *fi...原创 2022-03-29 00:03:18 · 774 阅读 · 0 评论 -
第二十七篇,LINUX系统编程开篇,进程的函数接口,包括创建进程fork(),查看进程的ID号getpid(),gedppid(),主动回收资源wait(),进程的退出exit() 函数。
一、linux系统编程学习大纲。1、进程的概念、进程的诞生与死亡、进程基本函数接口,进程意义。2、进程之间的通信方式:无名管道、有名管道、信号、消息队列、共享内存(信号量)3、linux下信号集概念、信号集的函数接口、信号集作用、如何给信号集设置阻塞状态?4、线程的概念、线程与进程有什么区别?线程诞生与死亡、线程一系列函数接口。5、线程同步互斥方式:有名信号量、无名信号量、互斥锁、读写锁。6、处理空闲线程的方式:条件变量。7、线程池 -> 为了能够同时处理多个任务。原创 2022-03-28 11:34:25 · 332 阅读 · 0 评论 -
用程序验证信号集相同信号共存,信号继承,嵌套的特点以及客户端和服务器通讯程序解析
1。是否有相同的信号#include <stdio.h>#include <signal.h>int main(int argc,char *argv[]){ //1. 定义信号集 sigset_t set; //2. 将所有的信号都添加到信号集中 sigfillset(&set); //3. 判断一下在不在集合中 int ret; ret = sigismember(&set,S...原创 2022-03-31 10:51:14 · 1463 阅读 · 0 评论 -
用程序验证信号集的相同信号,信号继承,嵌套特点。
请写出程序验证以下结论:一、使用信号集的函数接口,来验证以下的结论:1、验证在进程的挂起队列上,没有相同的信号。2、验证阻塞属性会被子进程继承。3、验证挂起队列上的信号不会继承。4、验证进程在响应信号时,是相互嵌套的。二、使用消息队列,完成以下的要求:写一个服务器程序,再写一个客户端程序,要求如下:1)服务器与客户端可以互相收发。2)服务器发送了quit给客户端,那么服务器与客户端都会退出。3)客户端发送了quit给服务器,那么客户端与服务器都要退出。...原创 2022-03-31 10:39:45 · 431 阅读 · 0 评论 -
接上一篇,同步互斥方式 --- 有名信号量和无名信号量
四、同步互斥方式 --- 有名信号量1、同步互斥的方式有哪些?1)信号量 --- 进程2)有名信号量 --- 进程3)无名信号量 --- 线程4)互斥锁 --- 线程5)读写锁 --- 线程2、什么是同步互斥?为什么要进行同步互斥?同步互斥就是为了解决进程/线程在处理任务时有先后顺序,为了防止多个线程同时去抢占同一个资源。3、有名信号量函数接口?1)创建并打开一个有名信号量? --> ...原创 2022-04-02 20:51:59 · 389 阅读 · 0 评论 -
标准文件描述符和一些指定标准输出对象的函数fprintf(),getchar() 的用法区别。
Linux中头文件路径:/usr/include/unistd.h//标准文件描述符/* Standard file descriptors. */#define STDIN_FILENO 0 //标准输入文件描述符#define STDOUT_FILENO 1 //标准输出文件描述符#define STDERR_FILENO 2 //标准出错文件描述符头文件路径:/usr/include/stdio.htypedef关键字给数据类...原创 2022-03-31 09:04:59 · 394 阅读 · 0 评论 -
C语言中常见的两个比较字符串是否相等的函数strcmp和strncmp
函数:strcmp和strncmpstrcmp使用格式: #include <string.h> int strcmp(const char *s1, const char *s2); 设这两个字符串为str1,str2,若str1==str2,则返回零;若str1 > str2,则返回正数;若str1< str2,则返回负数。即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇...原创 2022-03-30 09:38:23 · 15515 阅读 · 0 评论 -
第三十二篇,互斥锁和读写锁的概念,函数接口与操作pthread_mutex_init()pthread_mutex_lock()pthread_mutex_unlock()pthread_mutex_
1.互斥锁函数接口与操作pthread_mutex_init()pthread_mutex_lock()pthread_mutex_unlock()pthread_mutex_destroy()2.读写锁函数接口与操作pthread_rwlock_init() pthread_rwlock_rdlock()pthread_rwlock_wrlock()pthread_rwlock_unlock()pthread_rwlock_destroy()3.条件变量的相关操作原创 2022-04-03 04:45:00 · 912 阅读 · 0 评论