c语言wait
A. c程序 中wait:什么意思
c语言wait()函数:结束(中断)进程函数(常用)
相关函数:waitpid, fork
头文件:#include <sys/types.h> #include <sys/wait.h>
定义函数:pid_t wait (int * status);
函数说明:wait()会暂时停止目前进程的执行, 直到有信号来到或子进程结束. 如果在调用wait()时子进程已经结束, 则wait()会立即返回子进程结束状态值. 子进程的结束状态值会由参数status 返回, 而子进程的进程识别码也会一快返回. 如果不在意结束状态值, 则参数 status 可以设成NULL. 子进程的结束状态值请参考waitpid().
返回值:如果执行成功则返回子进程识别码(PID), 如果有错误发生则返回-1. 失败原因存于errno 中.
范例
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
main()
{
pid_tpid;
intstatus,i;
if(fork()==0)
{
printf("Thisisthechildprocess.pid=%d ",getpid());
exit(5);
}
else
{
sleep(1);
printf("Thisistheparentprocess,waitforchild... ";
pid=wait(&status);
i=WEXITSTATUS(status);
printf("child'spid=%d.exitstatus=^d ",pid,i);
}
}
执行:
This is the child process. pid=1501
This is the parent process, wait for child...
child's pid =1501, exit status =5
B. c语言中等待的函数是什么
如果对时间要求非常精确,可以考虑采用和汇编中处理的情况,看看cpu的频率,将for命令分解成汇编语言,看多少毫秒执行一次命令,然后设置循环次数,这样足够精确,实际上在汇编下也是这么做的。
C. 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秒
D. (C语言) 怎样快速关闭产生的time_wait
TIME_WAIT是tcp连接的主动关闭的那一端(客户端)最后进入的状态,这个是tcp/ip协议栈规定的,TIME_WAIT的持续时间是2倍的MSS,之所以进入这个状态,是为了防止客户端最后发送给
服务器的确认报文丢失,如果丢失了,客户端在TIME_WAIT状态的持续时间里可以重发这个丢失
的报文。c语言是关不了的,除非你修改TCP/IP内核代码。
E. (计算机操作系统)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指定的函数执行。
当一个信号的信号处理函数执行时,如果进程又接收到了该信号,该信号会自动被储存而不会中断信号处理函数的执行,直到信号处理函数执行完毕再重新调用相应的处理函数。但是如果在信号处理函数执行时进程收到了其它类型的信号,该函数的执行就会被中断。
(5)c语言wait扩展阅读:
signal操作的注意点:
1、不要使用低级的或者STDIO.H的IO函数
2、不要使用对操作
3、不要进行系统调用
4、不是浮点信号的时候不要用longjmp
5、signal函数是由ISO C定义的。因为ISO C不涉及多进程,进程组以及终端I/O等,所以他对信号的定义非常含糊,以至于对UNIX系统而言几乎毫无用处。
参考资料来源:网络-signal
参考资料来源:网络-sem_wait
F. 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秒钟。
G. wais是等待的意思嘛
不是,wait才是等待的意思。
wait在英语中是等待的意思,在计算机领域它还是一种Java术语,C语言中也有wait命令。
wait的其他描述:
wait 命令等待(暂停执行)直到由ProcessID 变量指定的进程标识终止。如果没有指定ProcessID 变量,wait 命令会等待直到调用 shell 的所有已知进程标识终止并且以0 为退出状态退出。
如果ProcessID 变量代表一个未知的进程标识,wait 命令会把它们视为以127 为退出状态退出的已知进程标识。wait 命令以ProcessID 变量指定的上个进程标识的退出状态退出。
H. 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的值的含义
I. wait是什么动词
wait英语中作动词有等待的意思,在计算机领域它还是一种Java术语,C语言中也有wait命令。