c语言编程--wait、sleep函数

本文深入探讨了C++中进程管理的核心函数wait()及其应用,同时介绍了用于延时的Sleep()函数在不同操作系统环境下的差异使用。详细解释了如何利用这些函数进行高效编程,特别关注Linux和Windows环境下的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 中。



------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在linux下面,sleep函数的参数是秒,而windows下面sleep的函数参数是毫秒。

C++中的函数

作用:延时,程序暂停若干时间。
时间,就是他的参数,单位是毫秒。
例如:
Sleep (500) ; //注意第一个字母是大写。
就是到这里停半秒,然后继续向下执行。
——————————————————
Linux C语言中 sleep的单位是秒
sleep(5); //停5秒
包含在 <unistd.h>头文件





### C语言 `wait` 函数使用说明 #### 函数原型 在Linux环境下,`wait()`函数用于等待子进程结束并获取其终止状态。该函数定义于`<sys/wait.h>`头文件中[^2]。 ```c #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status); ``` 此函数返回已退出的子进程ID;如果无子进程,则立即返回-1,并设置errno为ECHILD。当参数`status`不为空时,子进程的状态信息会被存储到它指向的位置。 #### 参数解析 - `int *status`: 存储子进程退出状态码的指针。若不需要捕获子进程的具体退出原因,可以传入NULL作为参数值。 #### 返回值意义 - 成功:返回已终止子进程的PID。 - 失败:返回-1,并设置相应的错误号(如没有子进程则为ECHILD)。 #### 示例程序 下面是一个简单的例子展示如何利用`wait()`来同步父子进程之间的执行顺序: ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main() { pid_t pid; int status; // 创建新进程 pid = fork(); if (pid < 0) { fprintf(stderr, "Fork failed"); exit(-1); } if (pid == 0) { /* child */ puts("This is Child Process."); sleep(3); // Simulate some work being done. _exit(EXIT_SUCCESS); } else { /* parent */ printf("Parent waiting for child to finish...\n"); // Wait until the child process ends and get its termination state. wait(&status); if(WIFEXITED(status)) printf("Child exited with code %d.\n", WEXITSTATUS(status)); printf("Parent continuing execution now.\n"); } return 0; } ``` 这段代码创建了一个新的子进程,在父进程中调用了`wait()`以阻塞当前线程直到子进程完成工作为止。之后可以通过检查`status`变量得知子进程是以正常方式还是异常情况结束了运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值