linux信号

详解linux下的串口通讯开发

孤街浪徒 提交于 2020-01-24 05:37:54
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C接口 (又称 EIA RS-232-C)它是在 1970年由美国电子工业协会 (EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。串口通讯指的是计算机依次以位( bit)为单位来传送数据,串行通讯使用的范围很广,在嵌入式系统开发过程中串口通讯也经常用到通讯方式之一。 Linux对所有设备的访问是通过设备文件来进行的,串口也是这样,为了访问串口,只需打开其设备文件即可操作串口设备。在 linux系统下面,每一个串口设备都有设备文件与其关联,设备文件位于系统的 /dev目录下面。如 linux下的 /ttyS0, /ttyS1分别表示的是串口 1和串口 2。下面来详细介绍 linux下是如何使用串口的: 1. 串口操作需要用到的头文件 #include <stdio.h> /*标准输入输出定义 */ #include <stdlib.h> /*标准函数库定义 */ #include <unistd.h> /*Unix 标准函数定义 */ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> /*文件控制定义 */ #include <termios.h> /*POSIX

Linux 命令 - kill: 向进程发送信号

淺唱寂寞╮ 提交于 2020-01-22 00:09:34
kill 命令通常用来 “杀死”(终止)进程,它可以用来终止运行不正常的程序或者反过来拒绝终止的程序。kill 命令准确地说并不是 “杀死” 进程,而是给进程发送信号(signal)。 和文件一样,进程也有所有者,只有进程的所有者(或超级用户)才能使用 kill 命令来向它发送信号。 命令格式 kill [-s signal|-p] [--] pid... kill -l [signal] 命令参数 -s signal   指定发送的信号。 -l   打印信号的名称列表。 常用信号 信号编号 信号名 含义 1 HUP 挂起信号 2 INT 中断信号 3 QUIT 退出信号 9 KILL 杀死信号 11 SEGV 段错误信号 15 TERM 终止信号,kill命令默认发送的信号类型 18 CONT 继续运行信号,恢复之前接受了STOP信号的进程 19 STOP 暂停信号 实例 a) 查看所有信号名称及对应的编号。 [huey@huey-K42JE ~]$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15)

linux进程管理(进程信号)

僤鯓⒐⒋嵵緔 提交于 2020-01-19 23:47:14
.进程信号 信号:进程和内核沟通所需要的语言 可控信号类型 man 7 signal 可控信号 含义 1 刷新 (让进程再次读取配置) 2 中断键盘输入 3 退出键盘 9 强制结束 (拔电) 15 正常关闭(正常关机) 18 激活进程 19 强制暂停 20 正常暂停 信号指令 Kill 信号 pid 只能结束单一进程 pkill 信号 进程名称 Killall -9 gedit 结束所有指定 来源: 51CTO 作者: wx5e0444acbb5dc 链接: https://blog.51cto.com/14653135/2467860

Linux_进程信号

馋奶兔 提交于 2020-01-19 00:25:25
1、信号基础 技术应用角度的信号 用户在Shell下输入命令启动一个前台进程 用户按下 ctrl+c ,此时键盘输入产生一个硬件中断,被操作系统获取并解释成信号,发送给目标前台进程 前台进程接收到信号后,进程执行退出 # include <iostream> # include <unistd.h> using namespace std ; int main ( ) { while ( 1 ) { cout << "Process running, Waiting a signal!" << endl ; sleep ( 1 ) ; } return 0 ; } ctrl+c 产生的信号只能发给前台进程。一个命令后面加&可以放到后台运行,这样Shell不必等待进程结束就可以接收新的命令,启动新进程 Shell可以同时运行一个前台进程和任意多个后台进程,只有前台进程才能接收 ctrl+c 这种控制键产生的信号 前台进程运行过程中用户随时可能按下 ctrl+c 而产生一个信号,说明该进程的用户空间代码执行到任何地方都有可能收到 SIGINT 信号而终止,所以信号相对于进程的控制流程来说是异步的 信号的概念 信号是进程之间事件异步通知的一种方式,属于软中断 kill -l #查看系统定义的信号列表 每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到

Linux信号机制(二)-- 信号集

扶醉桌前 提交于 2020-01-17 15:24:18
什么是信号集? 收到一个信号之后执行信号处理函数,在执行信号处理函数的过程中如果又来了一个相同的信号,那么这个信号将会被阻塞,直到信号处理函数执行完之后,再响应被阻塞的信号,注意如果信号被阻塞期间又收到了该信号,那么多个信号的处理会被合并为1次 比如正在执行SIGUSR1的信号处理函数,此时又收到了一个SIGUSR1信号,那么该信号将会被阻塞,直到信号处理函数执行完之后,再次执行该函数。如果在阻塞期间又收到了SIGUSER1信号,接下来只再调用一次SIGUSR1的信号处理函数 信号集就是用来记录当前收到了哪个信号,会把当前信号的标志位置成“正在处理”,如果此时再收到该信号,那么信号就阻塞等待 使用数据类型sigset_t表示信号集,在Linux中该类型是一个32位无符号整数,这是因为在Linux中定义了32种信号,每一个信号用32位无符号整型变量中的一位来标志,如果该位置为1,那么表示正在处理该信号,如果置为0表示可以处理该信号。注意:有的操作系统,信号个数多于32,此时就不能用32位整数表示一个信号集了 操作信号集的函数 函数原型如下: [1] #include <signal.h> // @brief 清空信号集,全部位置0 int sigemptyset(sigset_t *set); // 全部位置1 int sigfillset(sigset_t *set); //

linux各种IPC机制

别等时光非礼了梦想. 提交于 2020-01-13 19:50:47
linux各种IPC机制   docker中的资源隔离,一种就是IPC的隔离。IPC是进程间通信。 下面的文章转载自https://blog.csdn.net/yyq_9623/article/details/78794775 原帖发表在IBM的developerworks网站上,是一个系列的文章,作者郑彦兴,通过讲解和例子演示了Linux中几种IPC的使用方式,我觉得很好,在这里做一个保留,能看完的话Linux IPC的基础是没有问题的了。 一)Linux环境进程间通信(一)管道及有名管道 http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/ 二)Linux环境进程间通信(二): 信号 上: http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html 下: http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html 三)Linux环境进程间通信(三)消息队列 http://www.ibm.com/developerworks/cn/linux/l-ipc/part3/ 四)Linux环境进程间通信(四)信号灯 http://www.ibm.com/developerworks

Linux系统之进程状态

让人想犯罪 __ 提交于 2020-01-13 02:50:44
  一、进程状态      1、R (TASK_RUNNING),可执行状态      2、S (TASK_INTERRUPTIBLE),可中断的睡眠状态      3、D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态      4、T/t (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态      5、Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程成为僵尸进程      6、X (TASK_DEAD - EXIT_DEAD),退出状态,进程即将被销毁      7、查看进程状态      二、进程状态转换      1、进程初始状态      2、进程状态变迁      三、进程调度      四、参考      一、进程状态↑      D:uninterruptible sleep (usually IO)      R:running or runnable (on run queue)      S:interruptible sleep (waiting for an event to complete)      T:stopped by job control signal      t:stopped by debugger during the tracing      W:paging

linux shell 基础语法B

岁酱吖の 提交于 2020-01-10 18:39:26
接着之前的内容继续讲shell编程的基础。 这部分还是先要巩固重定向的使用,以及创建自己的文件描述符,在编写shell脚本中关注临时重定向和永久重定向的用法。 (1)< << (2)> >> 为了区分如上的重定向符号,大家搞懂以下2个例子就行: cat > file <<eof; cat >> fileA <fileB 实际使用中输入重定向还是比较少,多数是输出重定向 &> 表示stdout和stderr都重定向 对于文件描述符,我们不光要掌握0,1,2,还要能够自己创建自己的文件描述符,且在shell编程中与默认的标准文件描述符进行组合使用。比如说要恢复文件描述符就是一个例子。 exec 3 >&1 exec 1> testfile ... ... exec 1>&3 ... ... 以上是输出重定向的恢复,输入重定向如下 exec 6 <&0 exec 0 <filein ... exec 0 <&6 关闭文件描述符 exec 3 >&- 还有一种<>读写文件描述符的,慎用,最好是读完后再重定向写入,不然shell维护的内部指针会把文件内容搞得很混乱。 创建临时文件和目录 mktemp file.XXXXXX mktemp -t 创建在/tmp下面且返回绝对路径 mktemp -d创建目录 tee的使用 tee -a 重定向讲完,再讲讲脚本的控制。脚本的控制主要是信号的处理。

[转] Linux系统之进程状态

放肆的年华 提交于 2020-01-07 21:07:10
转自: https://www.cnblogs.com/littlecharacter/p/12154588.html 一、进程状态 D:uninterruptible sleep (usually IO) R:running or runnable (on run queue) S:interruptible sleep (waiting for an event to complete) T:stopped by job control signal t:stopped by debugger during the tracing W:paging (not valid since the 2.6.xx kernel) X:dead (should never be seen) Z:defunct ("zombie") process, terminated but not - reaped by its parent 1、R (TASK_RUNNING),可执行状态 只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进而,进程调度器就从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。

Linux系统之进程状态

最后都变了- 提交于 2020-01-07 15:52:11
一、进程状态 D:uninterruptible sleep (usually IO) R:running or runnable (on run queue) S:interruptible sleep (waiting for an event to complete) T:stopped by job control signal t:stopped by debugger during the tracing W:paging (not valid since the 2.6.xx kernel) X:dead (should never be seen) Z:defunct ("zombie") process, terminated but not - reaped by its parent 1、R (TASK_RUNNING),可执行状态 只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进而,进程调度器就从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。 很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态