程序运行暂停控制(pause 函数和 sleep 函数)

在C语言中,pause()sleep() 是两个用于控制程序执行流程的函数,它们可以让程序暂停执行一段时间,但它们的特性和用途有所不同。

pause() 函数

功能:pause() 函数会让调用它的进程挂起(暂停执行),直到接收到一个信号。这意味着程序会一直暂停,直到有外部事件(如用户输入或者其他进程发送的信号)唤醒它。它没有参数,也不允许指定暂停的时间长度。
头文件<unistd.h>
用法: pause(); // 程序暂停,等待信号唤醒。
返回值:接收到信号后,pause() 会返回接收到的信号的编号。如果没有信号到来,它就不会返回,也就是说正常情况下这个函数的调用不会返回到调用点。
说明pause() 函数可以使调用它的进程暂停执行,直到接收到任何信号时才会返回。这意味着不仅仅是特定的信号能够唤醒它,而是包括但不限于 SIGINT(中断,通常由Ctrl+C键产生)、SIGTERM(终止进程)、SIGALRM(定时器信号)等,任何信号都能够使调用了 pause() 的进程恢复执行。

一旦接收到信号,pause() 会立即返回,并且返回值是导致它返回的那个信号的编号。如果需要对特定信号做出响应或忽略某些信号,可以在调用pause()之前设置相应的信号处理函数,使用signal()或sigaction()等函数来指定信号的处理方式。这样,即使pause()被任意信号唤醒,也可以根据信号的不同采取不同的应对措施。

sleep() 函数

功能:sleep() 函数可以让程序暂停执行指定的时间长度。时间以秒为单位。与 pause() 不同,sleep() 会在指定的时间结束后自动恢复执行,而不需要外部信号。
头文件<unistd.h>(POSIX 系统)或 <windows.h>(Windows 系统)
用法:典型的用法是 sleep(5); 这会让程序暂停5秒钟。
返回值:在POSIX系统上,sleep() 函数返回0。但是,如果调用被信号中断,它可能返回剩余需要睡眠的时间(尽管这种行为依赖于具体的实现)。在Windows系统上,Sleep() 函数(注意大小写)没有返回值。

示例代码

使用 pause() 的示例:

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

void signal_handler(int signum) {
    printf("Received signal %d\n", signum);
}

int main() {
    signal(SIGINT, signal_handler); // 设置SIGINT(Ctrl+C)的处理函数
    printf("Pausing program. Press Ctrl+C to send a signal.\n");
    pause(); // 程序暂停,等待信号
    printf("Program resumed after signal.\n");
    return 0;
}

使用 sleep() 的示例:

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

int main() {
    printf("Program will sleep for 5 seconds...\n");
    sleep(5); // 程序暂停5秒
    printf("Program resumed.\n");
    return 0;
}

注意,上述示例在不同操作系统上的实现细节可能略有不同,尤其是 sleep() 函数在Windows和POSIX系统上的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值