c语言wait函数,wait函数的作用

(计算机操作系统)wait操作和signal操作什么意思?

wait操作:

公司主营业务:成都做网站、成都网站建设、成都外贸网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出衡南免费做网站回馈大家。

sem_wait是一个函数,也是一个原子操作,它的作用是从信号量的值减去一个“1”,但它永远会先等待该信号量为一个非零值才开始做减法。也就是说,如果你对一个值为2的信号量调用sem_wait(),线程将会继续执行,将信号量的值将减到1。

如果对一个值为0的信号量调用sem_wait(),这个函数就会原地等待直到有其它线程增加了这个值使它不再是0为止。如果有两个线程都在sem_wait()中等待同一个信号量变成非零值。

那么当它被第三个线程增加 一个“1”时,等待线程中只有一个能够对信号量做减法并继续执行,另一个还将处于等待状态。sem_trywait(sem_t *sem)是函数sem_wait的非阻塞版,它直接将信号量sem减1,同时返回错误代码。

signal操作:

sig是传递给signal的唯一参数。执行了signal()调用后,进程只要接收到类型为sig的信号,不管其正在执行程序的哪一部分,就立即执行func()函数。当func()函数执行结束后,控制权返回进程被中断的那一点继续执行。

signal()会依参数signum 指定的信号编号来设置该信号的处理函数。当指定的信号到达时就会跳转到参数handler指定的函数执行。

当一个信号的信号处理函数执行时,如果进程又接收到了该信号,该信号会自动被储存而不会中断信号处理函数的执行,直到信号处理函数执行完毕再重新调用相应的处理函数。但是如果在信号处理函数执行时进程收到了其它类型的信号,该函数的执行就会被中断。

扩展资料:

signal操作的注意点:

1、不要使用低级的或者STDIO.H的IO函数

2、不要使用对操作

3、不要进行系统调用

4、不是浮点信号的时候不要用longjmp

5、signal函数是由ISO C定义的。因为ISO C不涉及多进程,进程组以及终端I/O等,所以他对信号的定义非常含糊,以至于对UNIX系统而言几乎毫无用处。

参考资料来源:百度百科-signal

参考资料来源:百度百科-sem_wait

C语言的sleep,wait,delay函数有什么区别

wait 是等待子进程的返回 sleep 参数指定暂停时间, 单位是 s delay 参数指定暂停时间, 单位是 ms 所以 sleep(n) == delay(1000*n) 原型:extern void sleep(unsigned int sec); 用法:#include system.h 功能:短暂延时 说明:延时sec秒举例:// sleep.c #include system.h main(){int c;clrscr();printf("\nHello, world!");sleep(1);clrscr();printf("\nHi, guys");getchar();return 0;}原型:extern void delay(unsigned int msec); 用法:#include system.h 功能:短暂延时 说明:延时msec*4毫秒举例:// delay.c #include system.h main(){int c;clrscr();printf("\nHello, world!"); delay(250); // 250*4=1000msec=1secclrscr();printf("\nHi, guys");getchar();return 0;}wait(等待子进程中断或结束)相关函数waitpid,fork表头文件#includesys/types.h #includesys/wait.h 定义函数pid_t wait (int * status);函数说明 wait()会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用wait()时子进程已经结束,则wait()会立即返回子进程结束状态 值。子进程的结束状态值会由参数status 返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则参数status可以设成NULL。子进程的结束状态值请参考waitpid()。 返回值如果执行成功则返回子进程识别码(PID),如果有错误发生则返回-1。失败原因存于errno中。

c语言中 等待的函数是什么呢

包含头文件:

#include

windows.h

调用

Sleep(3000);

就是等待3000毫秒(3秒)。第一个字母S大写。

--------

也可以自己写一个

等待

整数秒的函数:

#include

time.h

void

wait

(

int

seconds

)

{

clock_t

endwait;

endwait

=

clock

()

+

seconds

*

CLK_TCK

;

while

(clock()

endwait)

{}

}

调用

wait(3);

就是等待3秒

c语言中的wait(&status)

status的返回值我查了下文档没有特别说明,估计这可能因具体实现而不同吧

不过文档说你可以用

WIFEXITED(stat_val)

WEXITSTATUS(stat_val)

WIFSIGNALED(stat_val)

WTERMSIG(stat_val)

WIFSTOPPED(stat_val)

WSTOPSIG(stat_val)

WIFCONTINUED(stat_val)

这几个宏来解释*status的值的含义

c语言中waiting()是什么

不是标准函数,应是自定义函数。例如:

#include "windows.h"

void waiting(){

Sleep(1000);

}

调用 waiting() 则将 等待 1秒钟。

=============

例如:

#include time.h

void waiting ( int seconds )

{

clock_t endwait;

endwait = clock () + seconds * CLK_TCK ;

while (clock() endwait) {}

}

调用 waiting(1) 则将 等待 1秒钟。


网页标题:c语言wait函数,wait函数的作用
文章源于:http://azwzsj.com/article/hdeddg.html