鍍金池/ 教程/ Linux/ alarm()函數(shù) Unix/Linux
outb()函數(shù) Unix/Linux
getpeername()函數(shù) Unix/Linux
io_setup()函數(shù) Unix/Linux
mknod()函數(shù) Unix/Linux
arch_prctl()函數(shù) Unix/Linux
inotify_add_watch()函數(shù) Unix/Linux
chmod()函數(shù) Unix/Linux
_exit()函數(shù) Unix/Linux
epoll_ctl()函數(shù) Unix/Linux
Unix/Linux系統(tǒng)調(diào)用
futimesat()函數(shù) Unix/Linux
oldolduname()函數(shù) Unix/Linux
sched_rr_get_interval()函數(shù) Unix/Linux
oldstat()函數(shù) Unix/Linux
pselect()函數(shù) Unix/Linux
close()函數(shù) Unix/Linux
add_key()函數(shù) Unix/Linux
clone()函數(shù) Unix/Linux
rename()函數(shù) Unix/Linux
msgop()函數(shù) Unix/Linux
getrlimit()函數(shù) Unix/Linux
linkat()函數(shù) Unix/Linux
ioprio_set()函數(shù) Unix/Linux
insw()函數(shù) Unix/Linux
munlock()函數(shù) Unix/Linux
getgid()函數(shù) Unix/Linux
chdir()函數(shù) Unix/Linux
rmdir()函數(shù) Unix/Linux
ioctl()函數(shù) Unix/Linux
lchown()函數(shù) Unix/Linux
execve()函數(shù) Unix/Linux
epoll_wait()函數(shù) Unix/Linux
fstatat()函數(shù) Unix/Linux
truncate()函數(shù) Unix/Linux
lock()函數(shù) Unix/Linux
outsb()函數(shù) Unix/Linux
chroot()函數(shù) Unix/Linux
kexec_load()函數(shù) Unix/Linux
afs_syscall()函數(shù) Unix/Linux
dup2()函數(shù) Unix/Linux
_newselect()函數(shù) Unix/Linux
inotify_rm_watch()函數(shù) Unix/Linux
recv()函數(shù) Unix/Linux
msgsnd()函數(shù) Unix/Linux
getdtablesize()函數(shù) Unix/Linux
ioperm()函數(shù) Unix/Linux
munmap()函數(shù) Unix/Linux
getpriority()函數(shù) Unix/Linux
sched_get_priority_min()函數(shù) Unix/Linux
outw_p()函數(shù) Unix/Linux
kill()函數(shù) Unix/Linux
lookup_dcookie()函數(shù) Unix/Linux
accept()函數(shù) Unix/Linux
obsolete()函數(shù) Unix/Linux
pread()函數(shù) Unix/Linux
getgroups()函數(shù) Unix/Linux
personality()函數(shù) Unix/Linux
recvfrom()函數(shù) Unix/Linux
putpmsg()函數(shù) Unix/Linux
getgroups()函數(shù) Unix/Linux
remap_file_pages()函數(shù) Unix/Linux
request_key()函數(shù) Unix/Linux
mount()函數(shù) Unix/Linux
sched_setscheduler()函數(shù) Unix/Linux
mkdirat()函數(shù) Unix/Linux
nfsservctl()函數(shù) Unix/Linux
getuid()函數(shù) Unix/Linux
prof()函數(shù) Unix/Linux
exit_group函數(shù) Unix/Linux
io_cancel()函數(shù) Unix/Linux
mmap()函數(shù) Unix/Linux
mremap()函數(shù) Unix/Linux
getitimer()函數(shù) Unix/Linux
unimplemented()函數(shù) Unix/Linux
read()函數(shù) Unix/Linux
inl()函數(shù) Unix/Linux
posix_fadvise()函數(shù) Unix/Linux
open()函數(shù) Unix/Linux
listen()函數(shù) Unix/Linux
io_destroy()函數(shù) Unix/Linux
acct()函數(shù) Unix/Linux
fcntl()函數(shù) Unix/Linux
recvmsg()函數(shù) Unix/Linux
statfs()函數(shù) Unix/Linux
oldlstat()函數(shù) Unix/Linux
outb()函數(shù) Unix/Linux
getpagesize()函數(shù) Unix/Linux
sched_yield()函數(shù) Unix/Linux
outw()函數(shù) Unix/Linux
inw_p()函數(shù) Unix/Linux
setpgid()函數(shù) Unix/Linux
quotactl()函數(shù) Unix/Linux
prctl()函數(shù) Unix/Linux
fattach()函數(shù) Unix/Linux
readahead()函數(shù) Unix/Linux
msgget()函數(shù) Unix/Linux
gethostname()函數(shù) Unix/Linux
semctl()函數(shù) Unix/Linux
munlockall()函數(shù) Unix/Linux
iopl()函數(shù) Unix/Linux
fdetach()函數(shù) Unix/Linux
getuid()函數(shù) Unix/Linux
gettid()函數(shù) Unix/Linux
pwrite()函數(shù) Unix/Linux
isastream()函數(shù) Unix/Linux
get_thread_area()函數(shù) Unix/Linux
mpx()函數(shù) Unix/Linux
io_getevents()函數(shù) Unix/Linux
lstat()函數(shù) Unix/Linux
readv()函數(shù) Unix/Linux
exit()函數(shù) Unix/Linux
inw()函數(shù) Unix/Linux
fchmod()函數(shù) Unix/Linux
mq_getsetattr()函數(shù) Unix/Linux
get_robust_list()函數(shù) Unix/Linux
_llseek()函數(shù) Unix/Linux
gettimeofday()函數(shù) Unix/Linux
nice()函數(shù) Unix/Linux
security()函數(shù) Unix/Linux
sched_get_priority_max()函數(shù) Unix/Linux
outb_p()函數(shù) Unix/Linux
intro()函數(shù) Unix/Linux
alarm()函數(shù) Unix/Linux
putmsg()函數(shù) Unix/Linux
fork()函數(shù) Unix/Linux
getpgrp()函數(shù) Unix/Linux
link()函數(shù) Unix/Linux
getcwd()函數(shù) Unix/Linux
insl()函數(shù) Unix/Linux
getsockname()函數(shù) Unix/Linux
dup()函數(shù) Unix/Linux
connect()函數(shù) Unix/Linux
select()函數(shù) Unix/Linux
futex()函數(shù) Unix/Linux
outsw()函數(shù) Unix/Linux
query_module()函數(shù) Unix/Linux
reboot()函數(shù) Unix/Linux
create_module()函數(shù) Unix/Linux
adjtimex()函數(shù) Unix/Linux
mlock()函數(shù) Unix/Linux
statvfs()函數(shù) Unix/Linux
gtty()函數(shù) Unix/Linux
epoll_create()函數(shù) Unix/Linux
bind()函數(shù) Unix/Linux
inl_p()函數(shù) Unix/Linux
select_tut()函數(shù) Unix/Linux
mincore()函數(shù) Unix/Linux
getresuid()函數(shù) Unix/Linux
getpmsg()函數(shù) Unix/Linux
getcontext()函數(shù) Unix/Linux
killpg()函數(shù) Unix/Linux
olduname()函數(shù) Unix/Linux
openat()函數(shù) Unix/Linux
pause()函數(shù) Unix/Linux
alloc_hugepages()函數(shù) Unix/Linux
ioctl_list()函數(shù) Unix/Linux
readlinkat()函數(shù) Unix/Linux
mprotect()函數(shù) Unix/Linux
getdomainname()函數(shù) Unix/Linux
readlink()函數(shù) Unix/Linux
madvise()函數(shù) Unix/Linux
bdflush()函數(shù) Unix/Linux
ipc()函數(shù) Unix/Linux
ptrace()函數(shù) Unix/Linux
getrusage()函數(shù) Unix/Linux
msync()函數(shù) Unix/Linux
faccessat()函數(shù) Unix/Linux
modify_ldt()函數(shù) Unix/Linux
get_kernel_syms()函數(shù) Unix/Linux
getpid()函數(shù) Unix/Linux
fsync()函數(shù) Unix/Linux
msgctl()函數(shù) Unix/Linux
break未實(shí)現(xiàn) Unix/Linux
sched_setparam()函數(shù) Unix/Linux
fchown()函數(shù) Unix/Linux
cacheflush()函數(shù) Unix/Linux
fdatasync()函數(shù) Unix/Linux
flock()函數(shù) Unix/Linux
pivot_root()函數(shù) Unix/Linux
inotify_init()函數(shù) Unix/Linux
fchmodat()函數(shù) Unix/Linux
keyctl()函數(shù) Unix/Linux
llseek()函數(shù) Unix/Linux
outb()函數(shù) Unix/Linux
pipe()函數(shù) Unix/Linux
io_submit()函數(shù) Unix/Linux
ppoll()函數(shù) Unix/Linux
multiplexer()函數(shù) Unix/Linux
access()函數(shù) Unix/Linux
sched_getparam()函數(shù) Unix/Linux
chown()函數(shù) Unix/Linux
readdir()函數(shù) Unix/Linux
inb_p()函數(shù) Unix/Linux
outsl()函數(shù) Unix/Linux
nanosleep()函數(shù) Unix/Linux
alloc_hugepages()函數(shù) Unix/Linux
sbrk()函數(shù) Unix/Linux
move_pages()函數(shù) Unix/Linux
fchdir()函數(shù) Unix/Linux
renameat()函數(shù) Unix/Linux
getppid()函數(shù) Unix/Linux
getsid()函數(shù) Unix/Linux
oldfstat()函數(shù) Unix/Linux
lseek()函數(shù) Unix/Linux
stat()函數(shù) Unix/Linux
path_resolution()函數(shù) Unix/Linux
getunwind()函數(shù) Unix/Linux
getsockopt()函數(shù) Unix/Linux
mmap2()函數(shù) Unix/Linux
getdents()函數(shù) Unix/Linux
fchownat()函數(shù) Unix/Linux
mkdir()函數(shù) Unix/Linux
perfmonctl()函數(shù) Unix/Linux
open()函數(shù) Unix/Linux
idle()函數(shù) Unix/Linux
poll()函數(shù) Unix/Linux
brk()函數(shù) Unix/Linux
sched_setaffinity()函數(shù) Unix/Linux
mlockall()函數(shù) Unix/Linux

alarm()函數(shù) Unix/Linux

名稱

alarm - 設(shè)置鬧鐘傳遞信號(hào)

內(nèi)容簡(jiǎn)介

#include <unistd.h> 

unsigned int alarm(unsigned int seconds);

描述

alarm() arranges for a SIGALRM signal to be delivered to the process in secondsseconds.

If seconds is zero, no new alarm() is scheduled.

In any event any previously set alarm() is cancelled.

返回值

alarm() 返回剩余的秒數(shù),直到任何先前預(yù)定的報(bào)警是由于傳遞或零,如果沒(méi)有先前預(yù)定的報(bào)警。

注意

alarm() and setitimer() share the same timer; calls to one will interfere with use of the other.

sleep() may be implemented using SIGALRM; mixing calls to alarm() and sleep() is a bad idea.

調(diào)度延遲,以往一樣,導(dǎo)致執(zhí)行任意數(shù)量的時(shí)間被推遲的進(jìn)程。
 

系統(tǒng)中的每個(gè)進(jìn)程都有一個(gè)私有的鬧鐘。這個(gè)鬧鐘很像一個(gè)計(jì)時(shí)器,可以設(shè)置在一定秒數(shù)后鬧鐘。時(shí)間一到,時(shí)鐘就發(fā)送一個(gè)信號(hào)SIGALRM到進(jìn)程。

函數(shù)原型:unsigned int alarm(unsigned int seconds);
頭文件:#include<unistd.h>
函數(shù)說(shuō)明: alarm()用來(lái)設(shè)置信號(hào)SIGALRM在經(jīng)過(guò)參數(shù)seconds指定的秒數(shù)后,傳送給目前的進(jìn)程。如果參數(shù)seconds為0,則之前設(shè)置的鬧鐘會(huì)被取消,并將剩下的時(shí)間返回。
返回值:如果調(diào)用此alarm()前,進(jìn)程已經(jīng)設(shè)置了鬧鐘時(shí)間,則返回上一個(gè)鬧鐘時(shí)間的剩余時(shí)間,否則返回0。 出錯(cuò)返回-1。

例1:

int main(int argc, char *argv[]) {

 unsigned int  timeleft;

 

 printf( "Set the alarm and sleep\n" );  alarm( 10 );  sleep( 5 );

 

 timeleft = alarm( 0 ); //獲得上一個(gè)鬧鐘的剩余時(shí)間:5秒  printf( "\Time left     before cancel, and rearm: %d\n", timeleft );


 alarm( timeleft );

 printf( "\Hanging around, waiting to die\n" );  pause(); //讓進(jìn)程暫停直到信號(hào)出現(xiàn)

 return EXIT_SUCCESS;

}

 

運(yùn)行結(jié)果:

首先打印   Set the alarm and sleep

5秒后打印  Time left before cancel, and rearm: 5

           Hanging around, waiting to die

再經(jīng)過(guò)5秒,程序結(jié)束

除非進(jìn)程為SIGALRM設(shè)置了處理函數(shù),否則信號(hào)將殺死這個(gè)進(jìn)程。比較下例中signal(SIGALRM, wakeup);語(yǔ)句打開(kāi)與關(guān)閉的區(qū)別。

例2:

static void timer(int sig) {  static int count=0;  count++;

 printf("\ncount = %d\n", count);

    if(sig == SIGALRM)     {         printf("timer\n");     }

 

 signal(SIGALRM, timer);  alarm(1);

 

  if (count == 5)     alarm(0);     return; }

 

int main(int argc, char *argv[]) {  signal(SIGALRM, timer);  alarm(1);  while(1);

}

 

計(jì)時(shí)器的另一個(gè)用途是調(diào)度一個(gè)在將來(lái)的某個(gè)時(shí)刻發(fā)生的動(dòng)作同時(shí)做些其他事情。調(diào)度一個(gè)將要發(fā)生的動(dòng)作很簡(jiǎn)單,通過(guò)調(diào)用alarm來(lái)設(shè)置計(jì)時(shí)器,然后繼續(xù)做別的事情。當(dāng)計(jì)時(shí)器計(jì)時(shí)到0時(shí),信號(hào)發(fā)送,處理函數(shù)被調(diào)用。

遵循于

SVr4, POSIX.1-2001, 4.3BSD

另請(qǐng)參閱