2015年5月17日星期日

DDD 主题交流会总结及计划 - 田园里的蟋蟀

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
DDD 主题交流会总结及计划 - 田园里的蟋蟀  阅读原文»

思维碰撞才能更加进步

2015年5月16日(上周六),我们举行了一次 DDD 主题的交流会,参会者主要是 ENode 群友、以及部分园友,为什么要搞这次交流会?原因很简单,就是希望可以提供对 DDD 感兴趣的开发者线下交流的机会,毕竟线上和线下是不同的,本次交流会的大致流程:

  1. 自我介绍

    • 个人基本信息
    • 个人技术信息
    • 对 DDD 的一些见解或问题
  2. netfocus 演讲(提问交流)

    • DDD 理论简介
    • 案例分析
    • ENode 简介
  3. 探讨开放主题(不固定,可以主动提出并发言)

    • 项目使用 DDD,有哪些好处?
    • 个人运用和实践 DDD,需要哪些要求?
    • 公司运用和实践 DDD,需要哪些要求?
    • DDD 提出已经11年了,为什么一直"不温不火"?
    • 对以后举办 DDD 主题交流会的一些意见和建议。
    • 你想说的。。。

自我介绍环节,大家都非常的踊跃,每个人都详细表达了自己的一些观点和看法,我觉得这是最棒的一次"自我介绍",原本设想是半个小时可以完成,最后将近一个小时才介绍完,但是很值得。第二环节 netfocus 的演讲,由浅入深,非常的专业,大家也听的很入神,在讲到 DDD 案例的时候,大家开始"活跃"起来了,一个一个问题开始抛向 netfocus,也进行了非常激烈的讨论,我觉得这是最精彩的地方,每个人的想法发生一些碰撞,整个会议室就像"火星撞地球"一样,空气中弥漫着"思维的火花",因为大家过于投入,所以也就忘记了时间,原本下午5点结束的交流会,到了6点,大家还在激烈的讨论着。因为时间有点晚了,所以最后环节的"探讨开放主题"就没有时间了,只是对第一个主题进行了一些讨论,主要是阳光铭睿实践和运用 DDD 的一些分享,也包含一些具体实践的问题,大家针对问题,进行了激烈的讨论,最后,大家又忘记了时间,不知不觉到了晚上7点,因为时间太晚,后面的主题也没办法进行讨论了。

这次 DDD 主题交流会,只是一个开始,对以后举办 DDD 主题交流会的一些意见和建议?原本想交流会上最后讨论下,但因为时间不够,没来得及进行,我大致列出了一些问题,希望大家可以进行讨论下:

  1. 谁组织?怎样组织?
  2. 交流会主题怎样确定?
  3. 演讲人怎样确定?
  4. 主持人怎样确定?(这次的主持人太烂)
  5. DDD 交流会怎么规划和发展?

因为是第一次组织举行,所以难免会出现一些问题,一些细节也考虑不到位,希望参会者可以见谅,另外,非常感谢 netfocus、AllEmpt(北京赶来)、ENode 群友、以及部分园友!

netfocus 演讲 PPT:DDD & ENODE

最后,附上部分参会者的合影:


本文链接:DDD 主题交流会总结及计划,转载请注明。

Linux 两组信号对比 - HPhone  阅读原文»

博客逐步迁移到,独立博客,原文地址 http://www.woniubi.cn/two_groups_signal_difference/

之前看信号的时候,没有太注意不同信号的对比.今天再次看到的时候,突然感觉对一些信号,非常相似,乃至非常容易混淆.今天周末就抽空总结一下.

第一组 关闭进程信号

常见的4中关闭进程信号是SIGKILL,SIGINT,SIGTERM,SIGQUIT.

  1. SIGKILL,就是为了关闭进程用的,无法捕获以及忽略.场景是,管理员把一些占用资源的进程或者无法掌控的孤儿进程杀死.
  2. SIGINT,interrupt(中断)进程,这个是可以捕获以及忽略。可以使用ctrl+c发出信号,直接发给父进程以及子进程,这样的话就可以把这个程序所有的进程都可以关闭掉。
  3. SIGTERM,terminate(终止)进程,这个也是可以捕获以及忽略的。和SIGINT相比,就是没有相应的键盘控制命令。如果要去关闭所有的进程的话,只能挨个的发给所有的进程。
  4. SIGQUIT,quit(退出)进程,这个也是可以捕获以及忽略的。可以使用ctrl+\发出信号,直接发给父进程以及子进程。如果是不捕获的话,他就会产生core文件。
信号是否可以被捕获键盘快捷键是否产生core文件
SIGKILL


SIGINT
ctrl+c
SIGTERM



SIGQUIT

ctrl+\

键盘快捷键最大的好处就是发给所有的进程。

最下面我们用程序来验证一下。

第一组 关闭进程信号 程序验证

先上代码。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
void process(int signo){
printf("signo:%d,pid:%d\n",signo,getpid());
}

void cleanup(){
printf("cleanup,pid:%d\n",getpid());
}

int main()
{
pid_t pid;
atexit(cleanup);
signal(SIGINT, process);
signal(SIGTERM, process);
//signal(SIGQUIT, process);
if( (pid = fork()) == 0 )
{
printf("child pid:%d\n",getpid());
while(1){
sleep(1);
}
}else{
printf("parent pid:%d\n",getpid());
while(1){
sleep(1);
}
}
return 0;
}

SIGKILL比较简单,我们就不再验证了。先验证一下SIGINT。

sigint

可以看到输入ctrl+c的时候,父子进程都收到相关的信号。但是我输入kill -2 742的时候,只有父进程收到了,不会传给子进程。

下面我们验证SIGQUIT产生core。

sigquit

可能部分的机器默认是不产生,我们需要输入几个命令。


#设置core文件大小,这里是无限制
ulimit -c unlimited
#core后面跟着pid
sudo sysctl kernel.core_uses_pid=1
#core文件存放路径,放在当前的文件夹下
sudo sysctl kernal.core_pattern=core

第二组 停止信号

这组信号对比,相对上一组就简单多了.

  1. SIGSTOP,程序挂起,没有相应的快捷键,不能被捕获以及忽略。
  2. SIGTSTP,程序挂起,快捷键ctrl+z,可以被捕获以及忽略。

如果挂起之后,怎么再次让他们启动呢。简单一点,我们可以输入jobs,然后看一下他们的索引值。然后fg启动他们。


sigtstp

我们也可以给他们发送SIGCONT信号,让他们启动起来。不过这个时候,他们的只能在后台运行了。


sigcton

这个时候,就可以看到他们的状态从T变成了S,从停止变成了运行状态。


本文链接:Linux 两组信号对比,转载请注明。

阅读更多内容

没有评论:

发表评论