/***
sync_process.c
***/
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <stdlib.h> int n = , flag = ; void sys_err(char *str)
{
perror(str);
exit();
} void do_sig_child(int num)
{
printf("I am child %d\t%d\n", getpid(), n);
n += ;
flag = ;
sleep();
} void do_sig_parent(int num)
{
printf("I am parent %d\t%d\n", getpid(), n);
n += ;
flag = ;
sleep();
} int main(void)
{
pid_t pid;
struct sigaction act; if ((pid = fork()) < )
sys_err("fork"); else if (pid > ) {
n = ;
sleep();
act.sa_handler = do_sig_parent;
sigemptyset(&act.sa_mask);
act.sa_flags = ;
sigaction(SIGUSR2, &act, NULL); //注册自己的信号捕捉函数 父使用SIGUSR2信号 do_sig_parent(); while() {
/* wait for signal */;
if (flag == ) { //父进程数数完成
kill(pid, SIGUSR1);
flag = ; //标志已经给子进程发送完信号
}
} } else if (pid == ){
n = ;
act.sa_handler = do_sig_child;
sigemptyset(&act.sa_mask);
act.sa_flags = ;
sigaction(SIGUSR1, &act, NULL); while() {
/* wait for signal */;
if (flag == ) {
kill(getppid(), SIGUSR2);
flag = ;
}
}
} return ;
}

全局变量异步I/O的更多相关文章

  1. linux服务器开发二(系统编程)--进程相关

    进程相关的概念 程序与进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(CPU.内存.打开的文件.设备.锁等等). 进程,是一个抽象的概念,与操作系统原理联系紧密.进程是活跃的程序,占用系 ...

  2. 测试框架 Mocha 实例教程(转载:来自阮一峰的一篇文章)

    Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用. 所谓"测试框架",就是运行测试的 ...

  3. linux系统编程--信号

    信号的概念 man 7 siganl  查看man手册 信号在我们的生活中随处可见, 如:古代战争中摔杯为号:现代战争中的信号弹:体育比赛中使用的信号枪......他们都有共性:1. 简单 2. 不能 ...

  4. 转载自-阮一峰-测试框架 Mocha 实例教程

    测试框架 Mocha 实例教程   作者: 阮一峰 日期: 2015年12月 3日 Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏 ...

  5. 浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法(转载)

    在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:t ...

  6. jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法

    jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法   在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们 ...

  7. ajax给全局变量设置值,请先关掉异步上传效果

    $.ajax({ type: 'POST', url: "/downloadExcelInfo", timeout: 0, async: false, contentType: & ...

  8. jquery如何在异步方式中给全局变量赋值

    定义一个全局全量,例如:var i=0;然后调用jquery的一个函数 $.get(url, function(data) {i=9;})alert(i);得到的是0而不是9. var i=0;    ...

  9. ajax 异步调用把返回值赋给一个全局变量的用法,最主要的就是把async属性改为 false,

    <script> $(document).ready(function () { <% string dqsj = System.DateTime.Now.ToString(&quo ...

随机推荐

  1. vs professional 2019 离线安装包下载方法

    run->cmd D:\vsprofessional2019>vs_professional__1254024763..exe --layout D:\vsprofessional2019 ...

  2. What's new in C# 7.0

    1.数字分隔符(Digit Separators ) 数字分隔符使代码更具可读性.在声明变量时,可以将_添加到单独的数字中.编译器只删除_.以下代码片段在C#7中看起来更具可读性: In C# 6 l ...

  3. Script text 属性

    参考 Script text 属性

  4. 同步/异步/阻塞/非阻塞/BIO/NIO/AIO

    转摘自:https://www.cnblogs.com/lixinjie/p/a-post-about-io-clearly.html 常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HT ...

  5. js如何获取数值

    获取jsfunction返回的值1,首先,用初始化代码创建一个新的HTML5文件,如下所示.2,创建一个新的H1标记来接收JS中函数休闲鹿的返回值.3,创建一个新的脚本标记并在标记中创建一个新函数.函 ...

  6. 下拉框选择 <from:select>

  7. Oracle insert /*+ APPEND */原理解析

    https://blog.csdn.net/xiaobluesky/article/details/50494101 关于insert /*+ append */我们需要注意以下三点: a.非归档模式 ...

  8. redis集群1

    redis-trib.rb命令详解   redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准 ...

  9. SQL Server 对接MySQL 数据库

    1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/ 2.安装好后,在管理工具- ...

  10. JS Array.reverse 将数组元素颠倒顺序

    <pre><script type="text/javascript"> //JS Array.reverse 将数组元素颠倒顺序//在JavaScript ...