Linux下alarm,sigaction,pause

原创 2016年08月29日 11:33:33
/*
  #include <unistd.h>
  unsigned int alarm(unsigned int seconds);

  RETURN VALUE
       alarm() returns the number of seconds remaining  until  any  previously
       scheduled alarm was due to be delivered, or zero if there was no previ‐
       ously scheduled alarm.

*/


/*
#include<stdio.h>
#include <unistd.h>

unsigned int ret=0;
unsigned seconds=10;
int main(void)
{
	while(1)
	{
	 ret=alarm(seconds);
     sleep(5);	 
	 printf("ret=%d.\n",ret);	
	}

	return 0;
}

//结果值是0,5,5,5循环5
*/

//******************************************************
/*
#include<stdio.h>
#include <unistd.h>
#include <signal.h>

void func(int sig)
{
	if(sig==SIGALRM)
	{
		printf("alarm happened.\n");
	}
}

unsigned ret=-1;
struct sigaction act={0};

int main(void)
{
	
     act.sa_handler=func;
	 sigaction(SIGALRM,&act,NULL);
                     

	 ret=alarm(8);
	 sleep(1);
	 printf("1st,ret=%d.\n",ret);
	 
	 ret=alarm(5);
	 sleep(2);
	 printf("2st,ret=%d.\n",ret);
	 
	 ret=alarm(6);
	 sleep(3);
	 printf("3st,ret=%d.\n",ret);
	 
	 
	 pause();
	
	 return 0;
	
}

//结果为:1st,ret=0.
//        2st,ret=7.
//        3st,ret=3.
//        alarm happened
*/
//***************************************************************
/*
//sigaction+alarm模拟sleep
#include<stdio.h>
#include <signal.h>
#include <unistd.h>

void func(void)
{
	
}

void mysleep(unsigned int seconds)
{

	struct sigaction act={0};
	
	act.sa_handler= func;
	sigaction(SIGALRM,&act,NULL);
    
	alarm(seconds);
	pause();
}

int main(void)
{
	
	printf("before mysleep.\n");
	mysleep(5);
	printf("after mysleep.\n");
	
	return 0;
}

*/

1.pause函数的作用是让当前进程暂停运行,交出CPU给其他进程去执行。当前进程进入pause状态后,当前进程会表现为卡住,阻塞住,要退出pause状态,当前进程需要被信号唤醒。

2.sigaction

  #include <signal.h>
  int sigaction(int signum, const struct sigaction *act,
                     struct sigaction *oldact);

 The sigaction structure is defined as something like:
  struct sigaction {
               void     (*sa_handler)(int);
               void     (*sa_sigaction)(int, siginfo_t *, void *);
               sigset_t   sa_mask;
               int        sa_flags;
               void     (*sa_restorer)(void);
                             };






版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux进程间通信(四)---信号通信之信号发送捕捉kill()、raise()、alarm()、pause()及其基础实验

信号概述    ●  信号是在软件层次上对中断机制的一种模拟。在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。    ●  信号是异步的,一个进程不必通过任何操作来等待信号的...

[Linux C编程]信号发送捕捉kill() raise() alarm() pause()

信号概述 ● 信号是在软件层次上对中断机制的一种模拟。在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。 ● 信号是异步的,一个进程不必通过任何操作来等待信号的到达...

Linux环境编程之信号处理(三、利用alarm()和pause()函数实现sleep()函数)

sleep()是执行挂起一段时间,而alarm()函数是定时器,pause()函数则是挂起进程,当出现信号打断时,才会继续往前执行;         先来分享下alarm()函数,alarm()函数用...

linux进程通信---几个发送信号的函数(kill,raise,alarm,pause)

信号:信号是unix中最古老的进程通信的一种方式,他是软件层次上对中断机制的模拟,是一种异步通信方式,信号可以实现用户空间进程和内核空间进程的交互,内核进程可以利用他通知用户空间进程发生了哪些系统事件...

Linux signal、alarm和pause函数

signal、alarm和pause函数 头文件和函数原型 #include typedef void (*sighandler_t)(int); sighandler_t sign...
  • CSLQM
  • CSLQM
  • 2016-11-19 16:12
  • 213

Linux下信号处理函数sigaction

//sigprof.c /************************************************************* FileName : si...

(笔记)alarm、pause、sleep函数的使用

一、函数简介 1 alarm() 头文件:#include 函数:unsigned int alarm(unsigned int seconds); 函数说明:alarm()用来设置信号SIGAL...

捉拿信号的alarm和pause函数

1. alarm函数: alarm函数是设置一个计时器, 在计时器超时的时候, 产生SIGALRM信号. 如果不忽略或捕捉此信号, 它的默认操作是终止调用该alarm函数的进程. 原型如下...

alarm和pause函数

NOTE:部分文字说明出自《UNIX环境高级编程》 1. alarm函数        每个进程只能有一个闹钟时钟。如果在调用alarm时,以前已为该进程设置过时钟,而且它还没超时,则将该闹钟...

信号的发送和捕捉函数(alarm、kill、raise、pause、 sleep、abort)

1.   alarm函数(1) alarm函数原型             alarm(设置信号传送闹钟)所需头文件#include #include 函数说明alarm...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)