Linux sleep exit abort函数

本文详细介绍了Linux中的sleep函数,包括其休眠原理和如何被信号中断。接着探讨了exit系统调用与exit库函数的区别,强调了它们在进程终止前的清理工作。还提到了_abort函数的直接终止特性。此外,文章讨论了setjmp和longjmp的非局部跳转功能,以及C++中的terminate函数在异常处理中的作用。
摘要由CSDN通过智能技术生成

总结了Linux中经常用到的sleep和exit函数
涉及
sleep
kill命令
exit _exit _Exit
atexit
tmpfile
abort
setjmp longjmp
exit部分是转载内容

1. Linux sleep库函数

#include <unistd.h>

使调用sleep函数的线程休眠seconds秒如果中间有一个未被忽略的信号到达则终止休眠,如果该程序没有终止(比如对于某个信号定义了信号处理程序)从sleep函数后面的语句继续执行。

返回剩余的休眠秒数。即如果请求的休眠时间已经过去则返回0,如果中途被信号处理程序中断则返回剩余的休眠秒数

unsigned int sleep(unsigned int seconds);

示例:用一个信号唤醒一个进程的休眠

test4.c

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
//信号处理函数
void sigFunc(int sig){
   
    printf("catch signal 14\n");
}
int main(){
   
    int seconds = 20;
    signal(SIGALRM ,sigFunc);	//注册SIGALRM信号的信号处理函数
    printf("this proceed pid is %d\n",getpid());
    printf("begin sleep %d seconds\n",seconds);
    int lastTime = sleep(seconds);	//调用线程休眠seconds秒并返回剩余休眠时间
    printf("stop sleeping, last %d seconds\n",lastTime);
}

运行结果:在一个终端编译并运行以上程序,看出该进程pid为3834。

然后另开另一个进程输入 kill -14 3834向3834进程发送信号14。可以看出该信号被进程处理函数成功捕获,sleep被终止并返回剩余休眠时间

xtark@xtark-vmpc:~/桌面/linux_study/section8$ gcc test4.c 
xtark@xtark-vmpc:~/桌面/linux_study/section8$ ./a.out 
this proceed pid is 3834
begin sleep 20 seconds
catch signal 14
stop sleeping, last 4 seconds

补充:Linux中的kill命令

可以通过kill -l查看所有信号

xtark@xtark-vmpc:~$ 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) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值