CSAPP第八章:读书笔记

[1] 前面讲了异常流的处理。

[2] 进程的概念,fork()一次,返回两次。子进程返回的是0,父进程返回的是子进程的pid。看一个例子:

这里写图片描述

很明显子进程会输出x=2,x=0,而父进程则会输出x=0.

[3] waitid,用来挂起指定进程直到该进程返回:如果指定的pid=-1,那么则指定进程是当前所有进程的子进程。看一个例子:

这里写图片描述

很明显这里有三种输出:bacc,abcc,acbc.书上答案有误。

再看一个wait_pid的例子:

这里写图片描述

经过分析可知程序一定会输出6行,顺序如下即可:

这里写图片描述

[4] 信号的接受,这里面的信号其实也是操作系统提供的,比如ctlr+c就会发出一种类型的信号,我们可以改变默认信号的处理方式来实现我们自己的信号:比如像下面这样就处理了按Cltr+C的信号,注意在IDE上按两次就直接退出,但是直接用命令行是没有问题的。

#include<stdio.h>
#include<signal.h>
#include <windows.h>

void sig_handler(int signo)
{
    if (signo == SIGINT)
        printf("received SIGINT\n");
}

int main(void)
{
    if (signal(SIGINT, sig_handler) == SIG_ERR)
        printf("\ncan't catch SIGINT\n");
    // A long long wait so that we can easily issue a signal to this process
    while (1)
        Sleep(1);
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值