cost 115 ms
如何確保調用 `SIGINT` 信號處理程序的次數與按下 `Ctrl+C` 的次數相同(使用 `longjmp`)?

[英]How do I ensure the `SIGINT` signal handler is called as many times as `Ctrl+C` is pressed (with `longjmp`)?

設置在下面的代碼中,它只是打印一些文本直到超時,我為SIGINT添加了一個處理程序 ( onintr() )。 處理程序onintr()執行以下操作: 將自身重置為默認處理程序。 打印出一些文本。 調用longjmp() 。 問題似乎只有第一個Ctrl+C被正確解釋。 第一次按下Ctrl+C后, ...

使用 setjmp 和 longjmp

[英]Using the setjmp and longjmp

有這么簡單的C代碼 我越來越: 中止幀! 我的問題是為什么它會打印abortframe! 如果我們通過0 (NOT true ) 並且因此條件if (setjmp (abortframe)){...}不應該滿足所以沒有abortframe! 字符串打印? ...

2022-06-29 10:18:39   1   35    c / setjmp  
編譯器對 setjmp/longjmp 的特殊處理

[英]Special treatment of setjmp/longjmp by compilers

在為什么 volatile 適用於 setjmp/longjmp中,用戶greggo評論: 實際上,現代 C 編譯器確實需要知道 setjmp 是一種特殊情況,因為通常存在由 setjmp 引起的流變化可能會嚴重破壞事物的優化,這些需要避免。 回到 K&R 時代,setjmp 不需要特 ...

setjmp是字面上保存程序的state嗎?

[英]Does setjmp literally save the state of the program?

所以,如果我要 malloc 500 字節,然后使用setjmp保存 state,然后釋放 500 字節,然后是longjmp ,我可以訪問這 500 字節嗎? 例如: 第二個printf的 output 是什么? 另外, longjmp? 我看到有些人使用大整數作為第二個參數。 ...

將 setjmp 和 longjmp 與本地 jmp_buf 一起使用

[英]Using setjmp and longjmp with a local jmp_buf

在本地jmp_buf實際上由寄存器而不是堆棧內存表示的情況下,當setjmp從longjmp返回時, setjmp或longjmp是否可能導致本地jmp_buf的內容不確定? 建議的重復是否允許為一次 setjmp() 調用多次執行 longjmp() ? 在全局變量的上下文中詢問。 之所以建議 ...

setjmp / longjmp 沒有跳到我認為應該跳的地方

[英]setjmp / longjmp does not jump where I think it should

我想了解 setjmp / longjmp 是如何工作的,所以我創建了一個示例程序,其中routineA 打印偶數,routineB 打印奇數,它們使用 longjmp 相互跳轉: 我用 gcc 編譯它並收到以下 output (插入行號以供以后參考): output 直到第 12 行都可以: T ...

2021-12-12 14:02:05   1   24    c / setjmp  
使用 setJmp longJmp 創建循環

[英]Creating a loop using setJmp longJmp

我正在嘗試使用這些函數創建一個無限循環(未成功)。 我的代碼: 我以為它會打印 C1A4B1B1B1....(B1 永遠重復)但我只是得到 C1A4B1 並且程序停止(SEGMENTATION ERROR)。 調用 longJmp 不是總是返回帶有參數 val 的 setJmp 嗎? 想了解我的錯誤 ...

2021-10-10 13:11:34   1   100    c / linux / setjmp  
C 使用 longjmp 時“錯誤:longjmp 導致未初始化的堆棧幀”

[英]C "error: longjmp causes uninitialized stackframe" when using longjmp

我正在嘗試用 C 構建一個簡單的協作多線程庫。基本上,可以使用thread_create創建線程,使用thread_queue將它們添加到運行隊列,然后使用thread_exec執行它們以完成。 在分配給線程的函數中,可以調用thread_yield將當前線程放在運行隊列的末尾並繼續下一個線程。 ...

setjmp/longjmp 和打開文件的 state

[英]setjmp/longjmp and the state of open files

C 標准說所有可訪問的對象都有值,並且抽象機218)的所有其他組件都有 state,截至調用 longjmp function 時,除了自動存儲持續時間對象的值是本地的 function 包含調用不具有 volatile 限定類型且已在 setjmp 調用和 longjmp 調用之間更改的相應 ...

為什么setjmp/longjmp

[英]Why does setjmp/longjmp

我想使用 setjmp/longjmp 在主函數中重用一些代碼(注意:這只是一個練習,而不是我在現實世界中認真計划做的事情)。 以下代碼是我想出的: 我期望此代碼的工作方式如下: main()函數將記住“body”部分的位置並使用if (setjmp(jmp_body) == 1)跳過它 ...

2021-07-15 14:07:07   2   87    c / setjmp  
如何解決 MISRA C:2012 規則 21.4?

[英]How to resolve MISRA C:2012 Rule 21.4?

我在標准庫 [#include <setjmp.h>] 的代碼中使用 setjmp 和 longjmp。 當我嘗試使用它時顯示以下 MISRA 錯誤: Violation of MISRA C:2012 21.4: The standard header file <setjmp ...

2021-03-09 06:01:15   1   24    setjmp  
C 主線程與其他線程的區別

[英]C difference between main thread and other threads

第一個線程與運行時創建的其他線程之間是否存在差異。 因為我有一個使用 longjmp 中止的程序,並且一個線程應該能夠終止該程序(在我的情況下退出或中止不起作用)。 我可以安全地使用 pthread_kill_other_threads_np 然后 longjmp 嗎? ...

自定義 setjmp/longjmp 實現分段錯誤

[英]custom setjmp/longjmp implemetation segmentation fault

我正在嘗試為 x64 windows 實現自定義setjmp/longjmp 。 我有以下代碼: 執行上下文保存在以下結構中: 代碼是this , this和this的修改版本 gdb顯示以下錯誤消息: #0 0x000000000040231e in contextRestore () 回溯停止 ...

是否允許為一次 setjmp() 調用多次執行 longjmp()?

[英]Is it allowed to do longjmp() multiple times for one setjmp() call?

在我的理解中, setjmp()和longjmp()的典型用法是異常處理( libpng用法應該是一個著名的例子),並且對於一次setjmp()調用,最多只有一次longjmp() setjmp()調用。 對於像這樣的一個setjmp()調用,是否允許多次執行longjmp()安全? 輸出: ...

linux C 藍光。 setjmp longjmp 警報

[英]linux C languang. setjmp longjmp alarm

執行我的代碼 我認為這段代碼的結果是在主要。 在處理程序中。 在主要。 在處理程序中。 在主要。 在處理程序中。 在主要。 在處理程序中。 . . . 但它沒有用。 處理程序中未設置警報 function。 當我刪除 setjmp、longjmp 時,它運行良好。 但我不想刪除它們。 set ...

為什么使用信號處理程序在此代碼中出現分段錯誤?

[英]Why do I get a segmentation fault in this code with a signal handler?

我在我的程序中編寫了一個信號處理程序,但是在這個文件結構中我遇到了分段錯誤。 但是,如果一切都在一個文件中,那么一切正常。 據我了解,它無法訪問返回地址。 我該如何解決? “測試.h” “測試.c” “主要.c” “結果:” “瓦爾格林德:” ...

setjmp 和 longjmp 在兩個函數之間切換的問題

[英]problem with setjmp and longjmp to switch between 2 functions

我正在嘗試實現一個在函數 fun() 和 main() 之間連續切換的代碼,它們除了無限地在屏幕上打印之外什么都不做。 我試圖通過 setjmp 和 longjmp 切換,並在 C 中使用 SIGALRM 信號。但是當我運行它時,它只工作一次,然后不切換。 我不明白這段代碼有什么問題。 ...

2020-03-10 17:51:26   1   139    c / setjmp  

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM