導航:首頁 > 文件類型 > linux的隊列頭文件

linux的隊列頭文件

發布時間:2023-08-29 06:55:35

A. linux下的sleep函數 要用的話得包涵什麼頭文件

Linux下的sleep函數要用的話得需要#include <unistd.h>

sleep把進程的運行狀態改為睡眠,將其從系統可執行隊列去掉,這樣系統就不會調度到該進程,不會分配CPU時間片,同時根據該進程的睡眠時間,將進程掛入相應的定時器隊列中。

同時內核維持一個定時器隊列,每一次時鍾中斷處理,都把當前到期的隊列中的進程喚醒,加入到可運行進程隊列中。 同時對所有掛入定時器隊列中的進程時間值減1。

參考代碼

#include<stdio.h>

#include<unistd.h>

intmain()

{

int sec=0,

usec=0;

while(1)

{

printf("sec=%d ",++sec);

sleep(1);

printf("usec=%d ",++usec);

usleep(1000000);

}

return0;

}

(1)linux的隊列頭文件擴展閱讀:

在Linux下,sleep中的「s」不大寫

sleep()單位為秒,usleep()裡面的單位是微秒。在內核中,sleep的實現是由pause函數和alarm函數兩個實現的。

特別注意在Codeblocks環境下是無法使用sleep函數的,因為在windows上Codeblocks採用mingw(Gnu在Window環境下的編譯器,可以充分使用WindowsApi)作為編譯器,而在stdlib.h中sleep的說明如下:_CRTIMP void __cdecl __MINGW_NOTHROW _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED;可以認為mingw舍棄了sleep函數,建議用Sleep實現sleep。

B. linux C語言的頭文件對應Windows下的頭文件是哪些

  1. linux和windows平台下,能夠對應的頭文件就是符合C11標準的頭文件。其他的頭文件不僅和平台有關系,還和平台下的編譯環境有關,很難畫上等號的。

  2. C語言符合標準的頭文件.

    #include <assert.h> //設定插入點
    #include <ctype.h> //字元處理
    #include <errno.h> //定義錯誤碼
    #include <float.h> //浮點數處理
    #include <fstream.h> //文件輸入/輸出
    #include <iomanip.h> //參數化輸入/輸出
    #include <iostream.h> //數據流輸入/輸出
    #include <limits.h> //定義各種數據類型最值常量
    #include <locale.h> //定義本地化函數
    #include <math.h> //定義數學函數
    #include <stdio.h> //定義輸入/輸出函數
    #include <stdlib.h> //定義雜項函數及內存分配函數
    #include <string.h> //字元串處理
    #include <strstrea.h> //基於數組的輸入/輸出
    #include <time.h> //定義關於時間的函數
    #include <wchar.h> //寬字元處理及輸入/輸出
    #include <wctype.h> //寬字元分類

  3. linux常用頭文件如下:
    POSIX標準定義的頭文件
    <dirent.h> 目錄項
    <fcntl.h> 文件控制
    <fnmatch.h> 文件名匹配類型
    <glob.h> 路徑名模式匹配類型
    <grp.h> 組文件
    <netdb.h> 網路資料庫操作
    <pwd.h> 口令文件
    <regex.h> 正則表達式
    <tar.h> TAR歸檔值
    <termios.h> 終端I/O
    <unistd.h> 符號常量
    <utime.h> 文件時間
    <wordexp.h> 字元擴展類型
    -------------------------
    <arpa/inet.h> INTERNET定義
    <net/if.h> 套接字本地介面
    <netinet/in.h> INTERNET地址族
    <netinet/tcp.h> 傳輸控制協議定義
    -------------------------
    <sys/mman.h> 內存管理聲明
    <sys/select.h> Select函數
    <sys/socket.h> 套接字借口
    <sys/stat.h> 文件狀態
    <sys/times.h> 進程時間
    <sys/types.h> 基本系統數據類型
    <sys/un.h> UNIX域套接字定義
    <sys/utsname.h> 系統名
    <sys/wait.h> 進程式控制制
    ------------------------------
    POSIX定義的XSI擴展頭文件
    <cpio.h> cpio歸檔值
    <dlfcn.h> 動態鏈接
    <fmtmsg.h> 消息顯示結構
    <ftw.h> 文件樹漫遊
    <iconv.h> 代碼集轉換使用程序
    <langinfo.h> 語言信息常量
    <libgen.h> 模式匹配函數定義
    <monetary.h> 貨幣類型
    <ndbm.h> 資料庫操作
    <nl_types.h> 消息類別
    <poll.h> 輪詢函數
    <search.h> 搜索表
    <strings.h> 字元串操作
    <syslog.h> 系統出錯日誌記錄
    <ucontext.h> 用戶上下文
    <ulimit.h> 用戶限制
    <utmpx.h> 用戶帳戶資料庫
    -----------------------------
    <sys/ipc.h> IPC(命名管道)
    <sys/msg.h> 消息隊列
    <sys/resource.h>資源操作
    <sys/sem.h> 信號量
    <sys/shm.h> 共享存儲
    <sys/statvfs.h> 文件系統信息
    <sys/time.h> 時間類型
    <sys/timeb.h> 附加的日期和時間定義
    <sys/uio.h> 矢量I/O操作
    ------------------------------
    POSIX定義的可選頭文件
    <aio.h> 非同步I/O
    <mqueue.h> 消息隊列
    <pthread.h> 線程
    <sched.h> 執行調度
    <semaphore.h> 信號量
    <spawn.h> 實時spawn介面
    <stropts.h> XSI STREAMS介面
    <trace.h> 事件跟蹤

C. 請教一個關於linux消息隊列的問題

一般使用步驟:

1. 用ftok產生一個key。

2. 調用msgget(使用key作為參數)產生一個隊列

3. 進程可以用msgsnd發送消息到這個隊列,相應的別的進程用msgrcv讀取。

這里需要注意msgsnd可能會失敗的兩個情況:

a) 可能被中斷打斷(包括msgsnd和msgrcv). 尤其是大流量應用中更容易出現. 比較安全的用法是判斷操作是否被中斷打斷,如果被打斷, 則需要繼續嘗試。

b) 消息隊列滿。產生這個錯誤,則需要考慮提高系統消息隊列規格,或者查看消息接收處是否有問題

4. msgctl函數可以用來刪除消息隊列
消息隊列產生之後,除非明確的刪除(可以用),產生的隊列會一直保留在系統中。linux下消息隊列的個數是有限的,注意不要泄露。如果 使用已經達到上限,msgget調用會失敗,產生的錯誤碼對應的提示信息為no space left on device.

注意點:

1.消息的類型 mtype 不需為非0值。如果使用0,則msgsnd會失敗,並得到」Invalid argument「錯誤。

2.msgflg為0表示阻塞等待,如果msgflg為IPC_NOWAIT表示非阻塞。

3.最好使用root許可權執行消息隊列,否則msgrcv 提示 "Permission denied"。

D. 如何使用Linux工作隊列workqueue

創建一個per-CPU
*編譯期間靜態創建一個per-CPU
DEFINE_PER_CPU(type, name)
創建一個名為name,數據類型為type的per-CPU,比如static DEFINE_PER_CPU(struct sk_buff_head, bs_cpu_queues),此時每個CPU都有一個名叫bs_cpu_queues,數據結構為_buff_head的變數副本。每個副本都是在自己的CPU上工作。

* 動態創建per-CPU,以下代碼是內核create_workqueue實現的片斷
struct workqueue_struct *__create_workqueue(const char *name,
int singlethread)
{
int cpu, destroy = 0;
struct workqueue_struct *wq;
struct task_struct *p;

wq = kzalloc(sizeof(*wq), GFP_KERNEL);
if (!wq)
return NULL;

wq->cpu_wq = alloc_percpu(struct cpu_workqueue_struct);
if (!wq->cpu_wq) {
kfree(wq);
return NULL;
}
……
}

E. Linux內核中等待隊列的幾種用法

1. 睡眠等待某個條件發生(條件為假時睡眠):
睡眠方式:wait_event, wait_event_interruptible
喚醒方式:wake_up (喚醒時要檢測條件是否為真,如果還為假則繼續睡眠,喚醒前一定要把條件變為真)
2. 手工休眠方式一:
1)建立並初始化一個等待隊列項
DEFINE_WAIT(my_wait) <== wait_queue_t my_wait; init_wait(&my_wait);
2)將等待隊列項添加到等待隊列頭中,並設置進程的狀態
prepare_to_wait(wait_queue_head_t *queue, wait_queue_t *wait, int state)
3)調用schele(),告訴內核調度別的進程運行
4)schele返回,完成後續清理工作
finish_wait()
3. 手工休眠方式二:
1)建立並初始化一個等待隊列項:
DEFINE_WAIT(my_wait) <== wait_queue_t my_wait; init_wait(&my_wait);
2)將等待隊列項添加到等待隊列頭中:
add_wait_queue
3)設置進程狀態
__set_current_status(TASK_INTERRUPTIBLE);
4)schele()
5)將等待隊列項從等待隊列中移除
remove_wait_queue()
其實,這種休眠方式相當於把手工休眠方式一中的第二步prepare_to_wait拆成兩步做了,即prepare_to_wait <====add_wait_queue + __set_current_status,其他都是一樣的。
4. 老版本的睡眠函數sleep_on(wait_queue_head_t *queue):

F. windows與linux 頭文件對照

1.linux和windows平台下,能夠對應的頭文件就是符合C11標準的頭文件。其他的頭文件不僅和平台有關系,還和平台下的編譯環境有關,很難畫上等號的。
2.C語言符合標準的頭文件
#include <assert.h> //設定插入點
#include <ctype.h> //字元處理
#include <errno.h> //定義錯誤碼
#include <float.h> //浮點數處理
#include <fstream.h> //文件輸入/輸出
#include <iomanip.h> //參數化輸入/輸出
#include <iostream.h> //數據流輸入/輸出
#include <limits.h> //定義各種數據類型最值常量
#include <locale.h> //定義本地化函數
#include <math.h> //定義數學函數
#include <stdio.h> //定義輸入/輸出函數
#include <stdlib.h> //定義雜項函數及內存分配函數
#include <string.h> //字元串處理
#include <strstrea.h> //基於數組的輸入/輸出
#include <time.h> //定義關於時間的函數
#include <wchar.h> //寬字元處理及輸入/輸出
#include <wctype.h> //寬字元分類
3.linux常用頭文件如下:
POSIX標準定義的頭文件
<dirent.h> 目錄項
<fcntl.h> 文件控制
<fnmatch.h> 文件名匹配類型
<glob.h> 路徑名模式匹配類型
<grp.h> 組文件
<netdb.h> 網路資料庫操作
<pwd.h> 口令文件
<regex.h> 正則表達式
<tar.h> TAR歸檔值
<termios.h> 終端I/O
<unistd.h> 符號常量
<utime.h> 文件時間
<wordexp.h> 字元擴展類型
-------------------------
<arpa/inet.h> INTERNET定義
<net/if.h> 套接字本地介面
<netinet/in.h> INTERNET地址族
<netinet/tcp.h> 傳輸控制協議定義
-------------------------
<sys/mman.h> 內存管理聲明
<sys/select.h> Select函數
<sys/socket.h> 套接字借口
<sys/stat.h> 文件狀態
<sys/times.h> 進程時間
<sys/types.h> 基本系統數據類型
<sys/un.h> UNIX域套接字定義
<sys/utsname.h> 系統名
<sys/wait.h> 進程式控制制
------------------------------
POSIX定義的XSI擴展頭文件
<cpio.h> cpio歸檔值
<dlfcn.h> 動態鏈接
<fmtmsg.h> 消息顯示結構
<ftw.h> 文件樹漫遊
<iconv.h> 代碼集轉換使用程序
<langinfo.h> 語言信息常量
<libgen.h> 模式匹配函數定義
<monetary.h> 貨幣類型
<ndbm.h> 資料庫操作
<nl_types.h> 消息類別
<poll.h> 輪詢函數
<search.h> 搜索表
<strings.h> 字元串操作
<syslog.h> 系統出錯日誌記錄
<ucontext.h> 用戶上下文
<ulimit.h> 用戶限制
<utmpx.h> 用戶帳戶資料庫
-----------------------------
<sys/ipc.h> IPC(命名管道)
<sys/msg.h> 消息隊列
<sys/resource.h>資源操作
<sys/sem.h> 信號量
<sys/shm.h> 共享存儲
<sys/statvfs.h> 文件系統信息
<sys/time.h> 時間類型
<sys/timeb.h> 附加的日期和時間定義
<sys/uio.h> 矢量I/O操作
------------------------------
POSIX定義的可選頭文件
<aio.h> 非同步I/O
<mqueue.h> 消息隊列
<pthread.h> 線程
<sched.h> 執行調度
<semaphore.h> 信號量
<spawn.h> 實時spawn介面
<stropts.h> XSI STREAMS介面
<trace.h> 事件跟蹤

閱讀全文

與linux的隊列頭文件相關的資料

熱點內容
怎麼重設微信支付密碼 瀏覽:115
plc編程實訓台如何 瀏覽:587
初中生自學哪個編程語言比較好 瀏覽:889
suselinux9ntp命令 瀏覽:604
php網路編程 瀏覽:265
國行5s最新系統版本 瀏覽:384
java輸出系統時間 瀏覽:227
大學心理普查要什麼app 瀏覽:216
fpga二分頻程序 瀏覽:228
ma5200g密碼 瀏覽:441
代碼編程M代表什麼 瀏覽:915
ipad的激活鎖怎麼設置密碼 瀏覽:166
iphone5s無法強制關機 瀏覽:191
Linux查看只顯示一位數的文件 瀏覽:852
ps做網站教程 瀏覽:959
什麼app軟體買機票便宜 瀏覽:874
盛京醫院開葯在APP掛什麼科 瀏覽:842
初三一模後如何教學視頻教程 瀏覽:902
車床編程如何通過度數來編程 瀏覽:93
安卓2k17怎麼設置首發 瀏覽:945

友情鏈接