展开

关键词

Linux(POSIX量)

System-V的量是老古董,除非万不得已,否则我们一般用POSIX量,好用、简单、靠谱。 拓展: POSIX量分为两种,分别是POSIX无名量和POSIX有名量,这两种量比之前介绍的system-V的量机制要简洁,虽然没有后者的应用范围那么广泛(尤其在一些老系统中,因为system-V 的量机制要更古老一些),但是POSIX良好的设计使得他们更具吸引力。 POSIX有名量的一般使用步骤是: 1,使用sem_open( )来创建或者打开一个有名量。 2,使用sem_wait( )和sem_post( )来分别进行P操作和V操作。 POSIX无名量的一般使用步骤是: 1,在这些线程都能访问到的区域定义这种变量(比如全局变量),类型是sem_t。 2,在任何线程使用它之前,用sem_init( )初始化他。

43030

Linux

signal 是 UNIX 系统最先开始使用的进程间通机制,因为 Linux 是继承于 UNIX 的,所以 Linux 也支持机制,通过向一个或多个进程送 异步事件 来实现,可以从键盘或者访问不存在的位置等地方产生 你可以在 Linux 系统上输入 kill -l 来列系统使用的,下面是我提供的一些 进程可以选择忽略送过来的,但是有两个是不能忽略的:SIGSTOP 和 SIGKILL 。 SIGILL SIGILL 在尝试执行非法、格式错误、未知或者特权指令时 SIGINT 当用户希望中断进程时,操作系统会向进程送 SIGINT 。 当用户退Linux登录时,前台进程组和后台有对终端输的进程将会收到SIGHUP。这个的默认操作为终止进程,因此前台进 程组和后台有终端输的进程就会中止。 不过可以捕获这个,比如wget能捕获SIGHUP,并忽略它,这样就算退Linux登录,wget也 能继续下载。 此外,对于与终端脱离关系的守护进程,这个用于通知它重新读取配置文件。

10420
  • 广告
    关闭

    腾讯云+社区系列公开课上线啦!

    Vite学习指南,基于腾讯云Webify部署项目。

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

    利用pythonrs232

    最近接的一个项目涉及到用PC机的usb口收rs232。为此,我写了一个简单的python程序,向usb口,然后通过一个usb转232线缆将转为rs232的。 这个过程可能比较长,达到十几分钟 7)安装完成后,PC的设备管理器会显示usb线对应的端口。在我的计算机上是COM15 ? 8)回到python IDLE,载入pyserial >>import serial 9)此时可以将rs232这端的来。我的线缆的232端是母口 ? 9针母口的排列如下: ? 在我的线缆里,5口代表地。2口代表射端。 按理说,应该用示波器观察射的。但是我没有示波器,只能将就。在日后的博客中,我会给更有说服力的观察办法。 13)ctrl+c,终止射。

    1.2K10

    linux 进程通-(signal)《Rice linux 学习开

    在之前讲解驱动的时候,也讲到这个话题,大家可以参考一下之前的文章(linux 异步通知《Rice linux 学习笔记》) Signal概述 是UNIX中所使用的进程通的一种最古老的方法 可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用他来通知用户空间进程生了哪些系统时间。它可以在任何时候给某一进程,而无需知道该进程的状态。 ,当生时,执行相应的自定义处理函数 执行缺省操作:Linux对每种都规定了默认操作 类型 相关函数 raise()函数:允许进程向自己 kill()函数:可以给进程或进程组 ,它不仅可以中止进程,也可以向进程送其他 alarm()函数:闹钟函数,它可以在进程中设置一个定时器,当定时器指定的时间到时,它就向进程送SIGALARM。 github链接:https://github.com/RiceChen/Linux-process-communication.git,记得加个star <运行结果>

    6820

    linux 进程通-量(Semaphore)《Rice linux 学习开

    Semaphore概述 量:它是不同进程或者一个给定进程内部不同线程间同步的机制 二值量:值为0或者1,与互斥锁类似,资源可用时,值为1,不可用时,值为0 计数灯:值在0到n之间。 而Posix灯(线程同步)指的是单个计数灯 System V 灯由内核维护 量的使用规则 若量为正,则进程可使用该资源 若量为0,则进程阻塞等待,并将进程插入等待队列,直到该量的值大于 0从等待队列中执行进程请求 加锁操作:如果量大于0,则量-1;如果量为0,则挂起该进程,并将这个进程插入等待队列 解锁操作:如果等待队列中有进程则唤醒该进程,让它恢复运行,否则,量+1 量相关函数 semget()函数:创建新的量或取得已有的量 semop()函数:改变量的值,改变操作在sem_opa中,sem_opa是sumbuf结构体对象 semctl()函数: github链接:https://github.com/RiceChen/Linux-process-communication.git,记得加个star。

    5120

    Linux进程通——

    Linux下的通机制是遵从POSIX标准的。34SIGRTMIN之前的是早期UNIX操作系统的。它们是不可靠的。 (SIGKILL和SIGSTOP这两个不能忽略) 捕捉:定义处理函数,当的时候,执行相应的操作。 (这个和Qt的槽差不多) 执行默认动作:Linux对每一个都规定了默认操作(可靠的默认操作是进程终止)。 还需要一个用于捕捉的函数。在Linux下pause()函数用于捕捉,如果没有生,pause函数将会一直等待。直到有生。 //挂起10s sleep(3); // kill(getpid(),SIGRTMIN); //getpid()函数用于获取当前进程的pid.

    1K30

    Linux基础

    的产生方式多种多样,它可以是内核自身产生的,比如现硬件错误(比如现分母为0的除法运算,或者现segmentation fault),内核需要通知某一进程;也可以是其它进程产生的,送给内核,再由内核传递给目标进程 上面几个中, SIGINT   当键盘按下CTRL+C从shell中被传递给shell中前台运行的进程,对应该的默认操作是中断 (INTERRUPT) 该进程。 SIGQUIT  当键盘按下CTRL+\从shell中被传递给shell中前台运行的进程,对应该的默认操作是退 (QUIT) 该进程。 SIGTSTP  当键盘按下CTRL+Z从shell中被传递给shell中前台运行的进程,对应该的默认操作是暂停 (STOP) 该进程。 SIGCONT  用于通知暂停的进程继续。 27397 我们可以在shell中通过$kill命令来向某个进程: $kill -SIGCONT  27397 来传递SIGCONT给ping进程。

    55350

    UNIX和Linux

    大家用的一般都是非时实,下边是列表. 1) SIGHUP 本在用户终端连接(正常或非正常)结束时, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联 当用户退Linux登录时,前台进程组和后台有对终端输的进程将会收到SIGHUP。这个的默认操作为终止进程,因此前台进程组和后台有终端输的进程就会中止。 不过可以捕获这个,比如wget能捕获SIGHUP,并忽略它,这样就算退Linux登录,wget也能继续下载。 此外,对于与终端脱离关系的守护进程,这个用于通知它重新读取配置文件。 如果管理员现某个进程终止不了,可尝试送这个。 用户键入SUSP字符时(通常是Ctrl-Z)这个 21) SIGTTIN 当后台作业要从用户终端读数据时, 该作业中的所有进程会收到SIGTTIN.

    71840

    Linux处理

    外部:终端 Ctrl-C 产生 SGINT ,定时器到期产生SIGALRM等。 显式请求:kill函数允许进程送任何给其他进程或进程组。 目前 Linux 支持64种分为非实时(不可靠)和实时(可靠)两种类型,对应于 Linux值为 1-31 和 34-64。 是异步的,一个进程不必通过任何操作来等待的到达。 当然我们可以使用 kill -s SIGINT pid命令来送一个给进程,屏幕同样打印 Get a signal -- SIGINT 的息。 实现原理 接下来我们分析一下Linux处理机制的实现原理。 上面介绍了怎么生一个给指定的进程,但是什么时候会触相应的处理函数呢?

    66530

    Linux笔记(15)| Linux

    今天要分享的是Linux中的机制,是一种软件中断,是一种处理异步事件的方法,可以很好地在多个进程之间进行同步和简单的数据交换。 一、 通常有三种方式,分别是使用kill、raise、sigqueue函数 1、kill函数 int kill(pid_t pid,int sig); 第一个参数代表向谁送,第二个参数代表送什么 调用成功返回0,调用失败返回-1. 2、raise函数 int raise(int sig); 这个是向自身送一个,等价于 kill(getpid(),sig); 3、sigqueue函数 int 二、的注册和响应 前面讲了三种的方式,但是光还不够,对于接收方来说,还得对进行处理。 一般可以使用signal函数和sigaction函数来注册。 实现的需求就是创建一个子进程,父进程每隔一秒钟向子进程送一个,子进程收到之后往一个txt文档中写入一句话。

    24010

    linux解释(3)--处理机制

    如果需要进程捕获某个,并作相应的处理,就需要注册处理函数(其实就是内核里需要识别函数,类似C语言里的include某函数库)。      处理就类似软中断,内核为每个进程准备了一段向量表,记录的处理机制。当某个生后,内核就会调用注册的函数去处理。     何时来,是未知的,因此进程不可能一直等待来。 的接收不是有用户进程来完成,需要内核来代理。当用户进程P2向另一个进程P1后,内核接收到,将放置P1进程的队里中。 当P1进程进入内核态时,会检查队列,并调取相应的函数进行处理。 ?

    28900

    Linux进程间通

    作为一种进程间通的基本形式,进程也可以给另一个进程。 --《linux系统编程》 ” 如上所述,可以实现进程间的通。本章主要记录的使用方法。 当进程退,或者子进程终止时,这类。 与进程例外事件相关的。如进程越界,或企图写一个只读的内存区域(如程序正文区),或执行一个特权指令及其他各种硬件错误。 在用户态下的进程。如进程调用系统调用kill向其他进程。 与终端交互相关的。如用户关闭一个终端,或按下break键等情况。 跟踪进程执行的送函数 kill(): 向其他进程 通常用法,kill给进程为pid的进程sig。 -1 sig被送到每个有权限的进程(除init进程外) <-1 sig被送到进程组为-pid的每一个进程 sig 送的量 返回值 0: 成功 -1:失败 raise(): 向自己所在进程

    19210

    Linux下的SIGCHLD

    那么这两个操作对于父进程来说都不是理想的,因此可以通过SIGCHLD来实现异步的操作。 也就是当子进程结束的时候通过SIGCHLD告诉父进程,然后父进程再去释放其资源,如果没有收到该也不影响父进程的运行。         那么对于SIGCHLD来说,只有在以下三个条件中才会向父进程送SIGCHLD: 1. 子进程终止时 2. 子进程接收到SIGSTOP停止时 3. ,就可以捕捉到子进程的了。 status)) // 判断子进程是否是 通过退 printf("child %d killed by the %dth signal\n", pid, WTERMSIG(status)

    1K10

    linux SIGABRT_NFKB通路

    linux SIGABRT_NFKB通路自己写的程序启动时偶尔会被SIGABRT杀死。故查看下SIGABRT的用法。SIGABRT是中止一个程序,它可以被捕捉,但不能被阻塞。 当程序调用abort(3)时,该进程会向自己送SIGABRT。 今天说一说linux SIGABRT_NFKB通路,希望能够帮助大家进步!!! 自己写的程序启动时偶尔会被SIGABRT杀死。故查看下SIGABRT的用法。 当程序调用abort(3)时,该进程会向自己送SIGABRT。所以,SIGABRT一般用于中一些关键的处理,assert失败时也会使用它。 但是是哪个进程送的SIGABRT暂时还不知道。

    8820

    相关产品

    • TencentOS Server

      TencentOS Server

      腾讯服务器操作系统(TencentOS Server,TS)是腾讯云推出的Linux操作系统,它旨在为云上运行的应用程序提供稳定、安全和高性能的执行环境。它可以运行在腾讯云CVM全规格实例上,包括黑石2.0服务器。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券