欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

sigsetjmp的用法總結(jié)

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

相關(guān)函數(shù):longjmp, siglongjmp, setjmp

表頭文件:#include <setjmp.h>

函數(shù)定義:int sigsetjmp(sigjmp_buf env, int savesigs)

函數(shù)說明:sigsetjmp()會保存目前堆棧環(huán)境,然后將目前的地址作一個記號,

而在程序其他地方調(diào)用siglongjmp()時便會直接跳到這個記號位置,然后還原堆棧,繼續(xù)程序的執(zhí)行。

參數(shù)env為用來保存目前堆棧環(huán)境,一般聲明為全局變量

參數(shù)savesigs若為非0則代表擱置的信號集合也會一塊保存

當(dāng)sigsetjmp()返回0時代表已經(jīng)做好記號上,若返回非0則代表由siglongjmp()跳轉(zhuǎn)回來。

返回:若直接調(diào)用則為0,若從siglongjmp調(diào)用返回則為非0

實例:

復(fù)制代碼 代碼如下:

#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
#include <unistd.h>
#include <sys/time.h>

sigjmp_buf jmp_env;

static void connect_alarm(int)
{
    siglongjmp(jmp_env, 1);
}

int main()
{
    // 當(dāng)超時時間sec_timeout大于等于運行時間run_time時會跳過printf("running...\n");
    int sec_timeout = 3;
    int run_time = 2;

    printf("timeout = %d, run time = %d\n", sec_timeout, run_time);
    if (sec_timeout)
    {
        // 超過用alarm函數(shù)設(shè)置的時間時產(chǎn)生此信號,調(diào)用connect_alarm函數(shù)
        signal(SIGALRM, connect_alarm);
        alarm(sec_timeout);
        printf("set timeout\n");
        if (sigsetjmp(jmp_env, 1))
        {
            printf("timeout\n");
            goto out;
        }
    }

    sleep(run_time);
    printf("running...\n");

out:
    if (sec_timeout)
    {
        // 取消先前設(shè)置的鬧鐘
        alarm(0);
        printf("cancel timeout\n");
    }

    return 0;
}


程序運行:
當(dāng)ec_timeout = 3, run_time = 2時:
timeout = 3, run_time = 2
set timeout
running...
cancel timeout

當(dāng)ec_timeout = 3, run_time = 4時:
timeout = 3, run_time = 4
set timeout
timeout
cancel timeout

上一篇:C#中委托的基本用法總結(jié)

欄    目:C語言

下一篇:C語言中的BYTE和char深入解析

本文標(biāo)題:sigsetjmp的用法總結(jié)

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/4038.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有