- 博客(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
原创 单向循环链表的增删改查
链接次序实现的-----》这是来自百度百科的说法,按小编的简单理解--》链表就是链式存储的表。本篇分享到这里就结束了,感兴趣的朋友可以点个关注哦,小编会不定期更新编程知识与大家分享~代码上边都写有注释,大家可以结合来参考,如果还是不能理解的话,可以试着画图来理解哦。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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人