首页
学习
活动
专区
圈层
工具
发布

Linux笔记(16)| 进程同步机制——管道和IPC

今天要分享的是Linux进程的同步机制,包括管道和IPC。之前学习的信号也有控制进程同步的作用,但是信号仅仅传输很少的信息,而且系统开销大,所以这里再介绍几种其他的进程同步机制。...在之前的一篇文章中有提到相关内容,但是当时没有详细展开,可以回顾一下:Linux笔记(10)| 进程概述。...管道是Linux下最常见的进程间的通信方式之一,它是在两个进程之间实现一个数据流通的通道。它有以下特点: 1、管道一般是半双工的,数据只能向一个方向流动。...读写的时候只要把他当做普通的文件就行了,和普通的文件描述符的读写一样,但是有一点不一样的是普通文件读完了数据还在,而管道读完之后数据就没了。...接下来就可以使用open或者fopen函数打开刚刚创建的有名管道文件,对其进行读写操作了。 三、System V IPC机制 IPC机制由消息队列、信号量以及共享内存三种具体实现方法组成。

2.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    操作系统:经典进程同步问题的高级探讨

    ✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。...✨✨ 经典进程同步问题 1.生产者—消费者问题 如果一个进程能产生并释放资源,则该进程称做生产者;如果一个进程单纯使用(消耗)资源,则该进程称做消费者。...它们应满足如下同步条件: ① 任一时刻所有生产者存放产品的单元数不能超过缓冲区的总容量(N )。 ② 所有消费者取出产品的总量不能超过所有生产者当前生产产品的总量。...第i个哲学家的进餐过程可描述如下: 解决死锁的方法: (1) 最多只允许4个哲学家同时拿筷子,保证有一人能 够进餐。 (2) 仅当左、右两根筷子均可用时,才允许他拿起筷子。...(3) 奇数号哲学家先拿左边的筷子,偶数号先拿右边的筷子。 方法(1)的算法描述如下: 4.打瞌睡的理发师问题 问题描述:理发店有一名理发师、一把理发椅和几把座椅,等待的理发者可以坐在座椅上。

    57710

    Linux守护进程的启动方法

    这篇文章主要为大家详细介绍了Linux守护进程的启动方法,本文介绍如何将一个 Web 应用,启动为守护进程,感兴趣的小伙伴们可以参考一下 "守护进程"(daemon)就是一直在后台运行的进程(daemon...Linux系统是这样设计的。...这由 Shell 的huponexit参数决定的。 $ shopt | grep huponexit 执行上面的命令,就会看到huponexit参数的值。...大多数Linux系统,这个参数默认关闭(off)。因此,session 退出的时候,不会把SIGHUP信号发给"后台任务"。所以,一般来说,"后台任务"不会随着 session 一起退出。...四、disown 命令 通过"后台任务"启动"守护进程"并不保险,因为有的系统的huponexit参数可能是打开的(on)。 更保险的方法是使用disown命令。

    5.7K00

    Linux 守护进程的启动方法

    Linux 守护进程的启动方法 “守护进程”(daemon)就是一直在后台运行的进程(daemon)。 本文介绍如何将一个 Web 应用,启动为守护进程。...Linux系统是这样设计的。...大多数Linux系统,这个参数默认关闭(off)。因此,session 退出的时候,不会把SIGHUP信号发给”后台任务”。所以,一般来说,”后台任务”不会随着 session 一起退出。...四、disown 命令 通过”后台任务”启动”守护进程”并不保险,因为有的系统的huponexit参数可能是打开的(on)。 更保险的方法是使用disown命令。...$ tmux $ node server.js # 返回原来的session $ tmux detach 除了tmux detach,另一种方法是按下Ctrl + B和d ,也可以回到原来的 session

    6.3K81

    Linux内核参数的配置方法

    /proc/sys/下的文件和子目录比较特别,它们对应的是系统内核参数,更改文件内容就意味着修改了相应的内核参数,可以简单的使用echo命令来完成修改: echo 1 > /proc/sys/net/ipv4...sysctl -w修改单个参数的配置,例如: sysctl -w net.ipv4.tcp_syncookies=1 和上面echo命令的效果一样。需要注意的是,要把目录分隔符斜杠/替换为点....通过sysctl -w修改,还是没有解决重启后修改失效的问题。更常用的方式是,把需要修改的配置集中放在/etc/sysctl.conf文件中,使用sysctl -p重新加载配置使其生效。...因此放在/etc/sysctl.conf中的系统参数设置在重启后也同样生效,同时也便于集中管理修改过了哪些内核参数。 最后,哪里有比较完整的内核参数说明文档?我觉得kernel.org的文档比较全。...例如我们常会遇到的网络内核参数,net.core 和 net.ipv4 。TCP相关的参数,也可以通过man文档了解。

    1.3K10

    Linux下的NFS配置方法

    NFS 是 Network File System 的简写,即网络文件系统。 网络文件系统是 Linux 支持的文件系统中的一种,也被称为NFS。NFS允许一个系统在网络上与他人共享目录和文件。...通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。 下面来介绍一下 NFS 的配置。...假设有2台 Linux 服务器,IP地址分别为 192.168.0.1 和 192.168.0.2,我们希望将 192.168.0.1 作为 Server 端,把其 /home/public 目录共享给作为客户端的...192.168.0.2,方法如下: Server端(IP地址:192.168.0.1) vi /etc/exports 编辑/etc/exports文件,并添加下面一行命令: /home/public...ID的用户 anongid:将客户机上的用户映射成属于指定的本地用户组ID sync:资料同步写入到内存与硬盘中 async:资料会先暂存于内存中,而非直接写入硬盘 阳光部落原创,更多内容请访问http

    3.9K20

    Linux删除乱码文件的方法

    当文件名为乱码的时候,无法通过键盘输入文件名,所以在终端下就不能直接利用rm,mv等命令管理文件了。 我们可以通过以下几种方法删除linux下的乱码文件。...(文件名为乱码) l 方法1 我们知道每个文件都有一个i节点号,我们可以考虑通过i节点号来管理文件。 首先,我们要取得文件的i节点号。这个可以通过ls命令的-i选项获得。...l 方法2 使用cp、mv和rm *的组合间接实现删除所有的乱码文件。 首先,把其他的非乱码命名的文件拷贝到其他的目录。 之后,删除该目录下的所有文件。 最后,把拷贝的文件移回原目录。...适用范围: 方法1:删除单个文件,或逐个删除乱码命名文件。 方法2:适用于乱码文件较多,又需要全部删除的情况。

    10.4K80

    Linux的文件的打包(tar方法)

    Linux的文件的打包(tar方法) tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个...-z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数...# tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。...# tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。...rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux 解压

    3.5K10

    Linux中xargs的使用方法

    背景 xargs可以高效对文件批量处理: 比如你要在不同的文件夹下创建同一个文件 比如你想根据某个查询条件, 批量删除符合条件的文件 比如你想对不同文件夹中的文件进行更新 笨笨的方法, 是一个一个的进行复制..., 比如cd xxx;ls;cp xxx yyy; cd ../; 其实, xargs可以非常优雅的进行批量的操作....下面用几个例子, 演示一下xargs的用法. 一个坑就是使用echo和ls的问题, 这里进行了测试. 2....将文件批量copy到六个文件夹中 命令: 这里使用ls -d仅仅打印文件夹名称, 而不打印文件夹里面的内容 xargs -i是定义对象的位置, 匹配的是{}, 它会将前面的对象, 放到{}的位置 ls...爬坑 解决方法, 使用两步法, 第一步将echo的对象, 进行分割, 一个对象一行, 使用xargs -n1 (base) [dengfei@localhost xargs]$ echo y* |xargs

    2.4K20

    Linux远程连接的方法有哪些

    这篇文章主要讲解了“Linux远程连接的方法有哪些”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。...不过在说怎样连接之前还是要先明确一个概念,为什么我标题没有用linux中的远程桌面连接呢,这是因为Linux下面的桌面,也就是我们所说的X Window ,只是linux下的一个应用程序而已, 所以linux...先说说通过SSH(Secure Shell)连接到linux下的shell,如果的操作平台是windows下,你可以下载SSH客户端工具连接到linux,比如最常用的PuTTY,你可以去这里下载: http...提起VNC大家肯定不要陌生,它是一个踌平台的远程控制软件, 有linux上装好它的服务器端,我们就可以通过客户端来进行连接了。...现在大家对于Linux远程连接的方法有哪些的内容应该都有一定的认识了吧,希望这篇能对大家有所帮助。

    8.5K20

    Linux修改时区的正确方法

    CentOS和Ubuntu的时区文件是/etc/localtime,但是在CentOS7以后localtime以及变成了一个链接文件 [root@centos7 ~]# ll /etc/localtime...lrwxrwxrwx 1 root root 33 Oct 12 11:01 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai 如果采用直接cp的方法修改系统时区...,那么就会把它所链接的文件修改掉,例如把美国的时区文件内容修改成了上海的时区内容,有可能会导致有些编程语言或程序在读取系统时区的时候发生错误,因此正确的修改方法是: CentOS6、Ubuntu16 #...cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime CentOS7、RHEL7、Scientific Linux 7、Oracle Linux 7...最好的方法是使用timedatectl命令 # timedatectl list-timezones |grep Shanghai #查找中国时区的完整名称 Asia/Shanghai # timedatectl

    4K20

    Arch Linux的正确使用方法

    谈起我的 Linux 学习之路,时间其实并不长。但是我却花了相对很少的时间,已经能达到把 Linux 当作自己的桌面系统的程度了。 Ubuntu 的体验令我有点沮丧,再者它也不适合我机子。...Arch Linux 的设计理念是 轻量 、 简洁。这点正符合我心意,二话不说我就开始了我的 Arch 之旅。...最近 “Linux 中国-新手村” QQ 群里的许多新人,总是自己一上来就要答案,但是却不曾想过,自己为这个问题做了什么尝试,自己是否有毅力去坚持学习 Linux ?...另外如果你是真心想学习 Linux ,我推荐你看看 Linus 的自传 《just for fun》,还有鸟哥的 《鸟哥的 Linux 私房菜》。...如果字幕文件编码为utf-8,而设置成subcp=cp936,则会出现部分乱码的情况。另一种更为简单的方法是设置成subcp=enca:zh:ucs-2,由enca负责字幕的编码显示问题。

    7.1K70

    Linux端口转发的几种常用方法

    在一些实际的场景里,我们需要通过利用一些端口转发工具,比如系统自带的命令行工具或第三方小软件,来绕过网络访问限制触及目标系统。 本文总结了Linux端口转发的一些常用方法,欢迎补充和指正。...---- 01、SSH 端口转发 SSH 提供了一个非常有意思的功能,就是端口转发,它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。...(1)开启伪装IP firewall-cmd --permanent --add-masquerade (2)配置端口转发,将到达本机的12345端口的访问转发到另一台服务器的22端口。...瑞士军刀“,一个简单而有用的工具,这里介绍一种使用netcat实现端口转发的方法。...socat TCP4-LISTEN:12345,reuseaddr,fork TCP4:192.168.172.131:22 07、 portmap 端口转发 Linux 版的lcx,内网端口转发工具。

    55.3K44

    Linux中的查找文件方法

    Linux中的四种查找文件方法 ? 一、which which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。 也就是说它返回的是你该命令所处的位置。...-B 指定搜索可执行文件的路径。 -M 指定搜索帮助文件的路径。 -S 指定搜索源代码文件的路径。 ?...而不是通过硬盘来查找的,这个数据库是liunx自动创建的,并且每天更新一次。...再给一些常用的参数: -n 至多显示n个输出。 -h 显示辅助讯息 -v 显示更多的讯息 -V 显示程式的版本讯息 ?...上面说了locate是在一个库里查找文件,因此对于一些有新变动的文件,而你的库还没更新时,这些文件你是用locate找不到的,这时find就派上用场了,它可是从硬盘里一个一个进行查找的,正因为这样它的速度也会相当慢

    9.4K10

    linux ioctl方法《Rice linux 学习开发》

    这篇文章来讲讲:ioctl的概念、函数的使用方法。...arg); 参数inode和filp:和open方法的参数一样,表示文件节点和打开的file结构 参数cmd:由用户空间不经修改地传递进来 参数arg:使用户空间传递的整数值;如果用户空间的调用程序没有第三个参数...其中ioctl方法中的cmd: 1需要选择对应不同命令的编号。 2为了防止对错误的设备使用正确的命令,命令号必须在系统范围内唯一。...#ifndef __CMD_H #define __CMD_H #include linux/ioctl.h> #define BIN_TYPE 'f' #define BIN_SET _IOW...(BIN_TYPE, 1, char) #define BIN_GET _IOR(BIN_TYPE, 2, char) #endif 驱动程序的实现:加入ioctl方法,并在将该方法注册到file_operations

    2.6K10
    领券