日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

我的C笔记

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 我的C笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近更新:

1,父進程fork一個子進程,當向父進程發送一個SIGINT或其它信號時,子進程是否會接受到該信號?

2,父進程調用system執行一個程序時,向父進程發送一個信號時,system運行中的程序是否能夠接受到該信號?

3,當父進程正常執行完畢后,會通知子進程嗎?

?

是我自己的筆記,亂七八糟的。

?

語法:如果參數為const型,僅表示該參數在此函數的實現中不能被修改,不代表傳入的參數類型一定是const型

int?sigsuspend(const sigset_t *sigmask);

代碼片段:

sigset_t zeromask; sigemptyset(&zeromask); sigsuspend(&zeromask);

?

signal繼承問題:子進程會繼承父進程的signal mask 測試地址:http://blog.chinaunix.net/uid-29100821-id-4018170.html

理論說明:http://blog.csdn.net/lihuibo128/article/details/8556669

?

unix的讀寫函數:open,write,read

說明:http://www.cnblogs.com/Pierre-de-Ronsard/archive/2012/07/09/2582417.html

?

實驗1:信號屏蔽字

1,構造一個進程:進程設置對某個信號的處理函數,模擬該信號處理,檢驗是否如預期

2,構造一個進程:進程設置對某個信號的處理函數,用sigprocmask設置,該進程對這一信號屏蔽,模擬該信號,檢查是否如預期,使用其它信號,檢查是否如預期

就能夠知道sigprocmask函數的功能。

sigpromask:用來設置進程的信號屏蔽,哪些信號不被進程所響應,及時設置了signal的信號handler

實驗1擴展知識

與信號集合相關的一組操作是:

頭文件 #include <signal.h> sigemptyset(sigset_t *set)初始化由set指定的信號集,信號集里面的所有信號被清空; sigfillset(sigset_t *set)調用該函數后,set指向的信號集中將包含linux支持的64種信號; sigaddset(sigset_t *set, int signum)在set指向的信號集中加入signum信號; sigdelset(sigset_t *set, int signum)在set指向的信號集中刪除signum信號; sigismember(const sigset_t *set, int signum)判定信號signum是否在set指向的信號集中。 int sigaction( int sig, const struct sigaction *act,struct sigaction *oact )檢查、修改和指定信號相關聯的信號響應。 實驗1擴展知識 int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oldset); 參數how 如果為SIG_BLOCK,該函數會將第二個參數的信號屏蔽集合附加到之前的信號屏蔽集合中 如果為SIG_UNBLOCK,該函數會設置新的信號屏蔽集合為(原先的mask和第二個參數set的補集)的交集。 如果為SIG_SETMASK,該函數會清除原先的信號屏蔽集合,設置第二個參數的信號屏蔽集合為新的信號屏蔽集合 實驗2:測試先屏蔽某個信號,再允許響應 該信號(只產生一次該信號) int main() {sigset_t sigset, oldmask;signal(SIGUSR1, proc_usr1);sigprocmask(0, NULL, &oldmask);sigaddset(&sigset, SIGUSR1); sigprocmask(SIG_BLOCK, &sigset, NULL);pr_mask("Block SIGUSR1");sleep(12);sigprocmask(SIG_SETMASK, &oldmask, NULL);//設置新的屏蔽字為oldmask
//sigprocmask(SIG_UNBLOCK, &sigset, NULL);//清除設置的屏蔽字pr_mask(
"Unblock SIGUSR1");sleep(12);return 0; }

運行,產生一次SIGUSR1信號

輸出:

Block SIGUSR1:SIGUSR1 proc_usr1 Unblock SIGUSR1:

??

sigpending(sigset_t *set):取得當前進程的信號屏蔽字 個人理解,該函數和sigprocmask(0, NULL, sigset_t *set)功能一樣 sigsuspend(); sigaction() http://blog.csdn.net/guoping16/article/details/6583957 http://blog.csdn.net/muge0913/article/details/7331129 http://www.cnblogs.com/wblyuyang/archive/2012/11/13/2768923.html http://baike.baidu.com/link?url=KDUzSG0_Xhuj2kawilAFXPkOQ5_qmogjSdintJYUFcTnyEMjq_M04ONmXePI95Ch

轉載于:https://www.cnblogs.com/helww/p/3813638.html

總結

以上是生活随笔為你收集整理的我的C笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。