黑马linux系统编程讲义,黑马《linux系统编程》学习笔记(从51到55)

五十一. kill函数的使用

e81424aa6db1b55531e33b4e857b48b2.png

这里我们写一个kill.c

#include #include #include #include #include #include #include int main(int argc, const char* argv[])

{

pid_t pid = fork();

if(pid == -1)

{

perror("fork error");

exit(1);

}

if(pid > 0)

{

while(1)

{

printf("parent process pid = %d\n", getpid());

sleep(1);

}

}

else if(pid == 0)

{

sleep(2);

// 弑父

kill(getppid(), SIGKILL);

}

return 0;

}

运行一下

[root@VM_0_15_centos 7Day]# ls

alarm.c homework raise.c sigaction.c signal.c

alarm_uncle.c kill.c setitimer.c sigmaks.c thread_attr.c

[root@VM_0_15_centos 7Day]# gcc kill.c

[root@VM_0_15_centos 7Day]# ./a.out

parent process pid = 30669

parent process pid = 30669

parent process pid = 30669

Killed

五十二. kill函数pid参数介绍

e8cddb2243d5dbfb00a540046b2f5a22.png

80bd23b2800c0f9393ad10351f5df214.png

五十三. raise和abort函数

756d13aedc69c6cdf7d408543d2a924c.png

写一个raise.c

#include #include #include #include #include #include #include #include int main(int argc, const char* argv[])

{

pid_t pid = fork();

if(pid > 0)

{

// parent

int s;

pid_t wpid = wait(&s);

printf("child died pid = %d\n",wpid);

if(WIFSIGNALED(s))

{

printf("term by signal: %d\n", WTERMSIG(s));

}

}

else if(pid == 0)

{

raise(SIGINT);

// abort();

}

return 0;

}

运行一下:

[root@VM_0_15_centos 7Day]# vim raise.c

[root@VM_0_15_centos 7Day]# ls

alarm.c a.out kill.c setitimer.c sigmaks.c thread_attr.c

alarm_uncle.c homework raise.c sigaction.c signal.c

[root@VM_0_15_centos 7Day]# gcc raise.c

[root@VM_0_15_centos 7Day]# ./a.out

child died pid = 12026

term by signal: 2

写一个abort.c

#include #include #include #include #include #include #include #include int main(int argc, const char* argv[])

{

pid_t pid = fork();

if(pid > 0)

{

// parent

int s;

pid_t wpid = wait(&s);

printf("child died pid = %d\n",wpid);

if(WIFSIGNALED(s))

{

printf("term by signal: %d\n", WTERMSIG(s));

}

}

else if(pid == 0)

{

// raise(SIGINT);

abort();

}

return 0;

}

运行一下

[root@VM_0_15_centos 7Day]# ls

abort.c alarm_uncle.c kill.c setitimer.c sigmaks.c thread_attr.c

alarm.c homework raise.c sigaction.c signal.c

[root@VM_0_15_centos 7Day]# gcc abort.c

[root@VM_0_15_centos 7Day]# ./a.out

child died pid = 12434

term by signal: 6

五十四. alarm函数

6b5341e0afb9658a127494e24f6201d8.png

alarm的文档

01c9771923f1bae306e171778e81c967.png

写一个alarm.c

#include #include #include #include #include #include int main(int argc, const char* argv[])

{

int ret = alarm(5);

printf("ret = %d\n", ret);

sleep(2);

ret = alarm(2);

printf("ret = %d\n", ret);

while(1)

{

printf("hello\n");

sleep(1);

}

return 0;

}

运行结果

[root@VM_0_15_centos 7Day]# gcc alarm.c

[root@VM_0_15_centos 7Day]# ./a.out

ret = 0

ret = 3

hello

hello

Alarm clock

五十五. 计算1s数多少个数

ff8521402f35c7f7e62cfb541313b6a9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值