自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Linux系统编程——实现有名管道两个进程之间互聊

前边我们已经知道,有名管道可以在不同的进程中读写数据,那么,应该怎样实现不同进程之间的互聊呢?注:结束对话时需要双方都说byebye。文件1:(头文件两个相同)

2023-04-04 17:24:00 178

原创 Linux系统编程——有名管道

函数形式:int mkfifo(const char *pathname, mode_t mode);相对于无名管道而言,管道有名字后,可以在各个进程之间相互访问数据。const char *pathname---》路径名。注意:在Linux环境下,有名管道不能在共享目录中创建。作用:执行这个函数之后,会成功创建一个有名管道文件。1、可以在不同进程之间相互通信(管道名相同时)简单来说,有名管道就是有名字的管道文件。mode_t mode----》管道权限。下边的读的代码,头文件和上边的一样;

2023-04-04 15:58:28 294

原创 Linux系统编程——无名管道

返回值: On success, zero is returned. On error, -1 is returned, and errno is。作用:执行这个函数之后,会得到两个文件描述符,分别是pipefd[0]和pipefd[1];2、半双工的通信方式,具有固定的读端和写段,在同一时刻,数据只能往一个方向传输,不能同时读写。管道是Linux系统内核的特殊文件,用于进程之间的通信。3、管道中的数据读取完后就被删除了。pipefd[1]-----》写段。pipefd[0]----》读端。

2023-04-04 14:40:01 200

原创 双向循环链表的增删改查

本篇分享到这就结束了,屏幕前的你学会了吗?感兴趣的朋友可以点个关注,小编会不定期更新编程作品哦~

2023-04-03 21:54:47 75

原创 单向循环链表的增删改查

链接次序实现的-----》这是来自百度百科的说法,按小编的简单理解--》链表就是链式存储的表。本篇分享到这里就结束了,感兴趣的朋友可以点个关注哦,小编会不定期更新编程知识与大家分享~代码上边都写有注释,大家可以结合来参考,如果还是不能理解的话,可以试着画图来理解哦。3.所有数据随机存储,若想查到指定节点只能从头到尾遍历,无法 直接找到指定的节点。2.链表上的存储空间不是连续的,需要用指针将其连接起来。了解完链表的特点后,我们再来看看单向循环链是怎样的。的逻辑顺序是通过链表中的。

2023-04-03 09:00:14 64

原创 如何用消息队列实现多进程之间的互聊

思路分析:前边我们已经知道,当路径名和project id相同时,获取到的key值和消息队列的id号也是一致的,根据这个特点,我们只需要将发送消息和接收消息的两个进程设为相同的路进名和project id ,它们就能够实现相互通信。我们来看下代码:(代码过多,可看行号分清)结合图来分析:最终要实现的效果就是用户1里边的父进程发给用户2里边的子进程,用户2里边的父进程发给用户1里边的子进程。(只是其中一个例子,具体谁负责发和收,可根据自己的喜好选择)本篇分享到这里就结束了,感兴趣的朋友可以点个关注哦~

2023-04-01 17:27:51 322

原创 什么是IPC对象 (Inter Process Communicate)

IPC对象是活动在内核级别的一种 进程间通信 的工具。存在的IPC对象通过它的标识符来引用和访问,这个标识符是一个非负整数,它唯一的标识了一个IPC对象,这个IPC对象可以是 消息队列 或 信号量 或 共享存储 器中的任意一种类型。如:用户需要使用IPC对象来进行进程之间 的通信,首先得为IPC对象申请对应的资源,例如想要使用消息队列来实现通信,那么就必须先申请消息队列对应的。可以看到,当路径名和projiect id一样时,在两个进程之间获取到的key值和消息队列的id号也是一致的。

2023-04-01 16:16:55 369

原创 exit(0)、_exit(0)/Exit(0)、fork()和vfork()之间的区别

可以看到,父进程在fork()时,会将父进程的空间拷贝一份给子进程。父进程和子进程的地址是相同的,但父进程改了a的值,子进程却没改变,由此验证它们 拥有独立的内存空间,互不影响。可以看到,子进程睡眠两秒再执行,但出来的还是子进程先执行,子进程改了a的值父进程也会同时改变,由此看出它们的空间是共享的。否则导致 程序死锁,程序会出现异常。1、子进程与父进程共享内存空间,更加准确来说,子进程在调用exec函数或者exit函数之前内存空间是共享的。2、一定是子进程先运行,而且是等子进程结束之后,父进程才开始运行。

2023-03-29 22:08:54 405

原创 进程的概念

僵尸进程:调用fork()函数创建的子进程,子进程若比父进程先退出,子进程退出后称为僵尸进程(进程的状态栏为defunct)。注意:若父进程走了,子进程还在一直循环,可用命令kill -9(后边这里写的是子进程的ID号)来结束。注意:wait属于一个阻塞函数,若子进程没退出变成僵尸态,这函数就会一直阻塞,直到子进程变成僵尸态后。孤儿进程:调用fork()函数创建的子进程,父进程若比子进程先退出,子进程称为孤儿进程。当里边填NULL时,如:wait(NULL):表示父进程只回收资源,不关心子进程退出状态。

2023-03-28 22:36:34 49

原创 C语言如何反转单链表上的数据

通过小编的讲解,是不是感觉没那么难啦,喜欢编程的朋友可以点个关注,小编会不定期更新作品哦。代码上边都写有注释,想象力有限的朋友,可以结合小编下面的图进行理解哦。

2023-03-27 22:35:05 45

原创 C语言如何创建属于自己的头文件?

C语言如何创建属于自己的头文件

2023-03-26 22:25:07 6554 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除