linux修改POSIX訊息佇列(msgqueue)的各項限制(最大記憶體、msg_max、msgsize_max、queues_max)
1.進入 目錄 /proc/sys/fs/mqueue/,檢視各項訊息佇列的預設max設定:
[[email protected] ~]# ls -l /proc/sys/fs/mqueue/
total 0
-rw-r--r-- 1 root root 0 Aug 20 23:04 msg_default
-rw-r--r-- 1 root root 0 Aug 20 23:04 msg_max
-rw-r--r-- 1 root root 0 Aug 20 23:04 msgsize_default
-rw-r--r-- 1 root root 0 Aug 20 23:04 msgsize_max
-rw-r--r-- 1 root root 0 Aug 20 23:04 queues_max
[ [email protected] ~]# cat /proc/sys/fs/mqueue/msg_max
10
[[email protected] ~]# cat /proc/sys/fs/mqueue/msgsize_max
8192
[[email protected] ~]# cat /proc/sys/fs/mqueue/queues_max
256
以修改msg_max為例:
[[email protected] ~]# echo "10000">/proc/sys/fs/mqueue/msg_max [[email protected] ~]# cat /proc/sys/fs/mqueue/msg_max 10000
上述可解決mq_open時,經常遇到的errno=22:/* Invalid argument */問題,其他修改型別。
2. 解除訊息佇列佔用記憶體81920的限制:
vim /etc/security/limits.conf
新增:
* soft msgqueue unlimited
* hard msgqueue unlimited
上述各列用tab分開,儲存後系統重新啟動後生效。使用下面命令驗證:
[[email protected] ~]# ulimit -q
unlimited
附,/etc/security/limits.conf檔案的說明:
[[email protected] ~]# cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#This file sets the resource limits for the users logged in via PAM.
#It does not affect resource limits of the system services.
#
#Also note that configuration files in /etc/security/limits.d directory,
#which are read in alphabetical order, override the settings in this
#file in case the domain is the same or more specific.
#That means for example that setting a limit for wildcard domain here
#can be overriden with a wildcard setting in a config file in the
#subdirectory, but a user specific setting here can be overriden only
#with a user specific setting in the subdirectory.
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - a user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open file descriptors
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
相關推薦
linux修改POSIX訊息佇列(msgqueue)的各項限制(最大記憶體、msg_max、msgsize_max、queues_max)
1.進入 目錄 /proc/sys/fs/mqueue/,檢視各項訊息佇列的預設max設定: [[email protected] ~]# ls -l /proc/sys/fs/mqueue/ total 0 -rw-r--r-- 1 root root 0 Au
Linux程序間通訊(IPC)程式設計實踐(十二)Posix訊息佇列--基本API的使用
posix訊息佇列與system v訊息佇列的差別: (1)對posix訊息佇列的讀總是返回最高優先順序的最早訊息,對system v訊息佇列的讀則可以返回任意指定優先順序的訊息。 (2)當往一個空佇列放置一個訊息時,posix訊息佇列允許產生一個訊號或啟動一個執行緒,
細說linux IPC(九):posix訊息佇列
本部落格專注於原創(或翻譯), 轉載本部落格文章請保留文章宣告,文章僅供學習與參考,未經允許情況下嚴禁用於商業用途!! 本部落格地址: blog.csdn.net/shallnet 或 blog.csdn.net/gentleliu email : liuy0711
程序間通訊筆記(3)—POSIX訊息佇列
POSIX 訊息佇列 1.概述 訊息佇列可認為是一個訊息連結串列,頭訊息指定當前佇列的兩個屬性:佇列中允許的最大訊息數和每個訊息的最大大小。而每個訊息本身除了資料之外還包括優先順序和資料長度等內容。 1.1POSIX訊息佇列和SystemV訊息佇列的區
UNP(卷2:程序間通訊)—— 第5章:Posix訊息佇列
Posix訊息佇列 和 System V 訊息佇列的主要差別: 對POSIX訊息佇列的讀總是返回最高優先順序的最早訊息,對System V訊息佇列的讀則可以返回任意指定優先順序的訊息。當往一個空佇列放置一個訊息時,Posix訊息佇列允許產生一個訊號或啟動一個執行緒,Sys
linux c程式設計:Posix訊息佇列
Posix訊息佇列可以認為是一個訊息連結串列. 有足夠寫許可權的執行緒可以往佇列中放置訊息, 有足夠讀許可權的執行緒可以從佇列中取走訊息 在某個程序往一個佇列寫入訊息前, 並不需要另外某個程序在該佇列上等待訊息的到達. 這跟管道和FIFO是相反的, 因為
阿里雲訊息佇列MQTT踩坑之路(阿里雲MQTT Android客戶端)
最近需求需要實現收款語音的播報,如果不考慮費用問題,使用推送與百度AL開發平臺的語音合成功能就可也實現收款語音的播報功能,但是考慮到費用問題,同時還考慮到ios與Android可以同步使用的問題(ps:ios如果使用推送需要把應用上架到蘋果商店,需要有證書,而且還需要通過稽核
Linux程序間通訊之POSIX訊息佇列
訊息佇列可認為是一個訊息連結串列,它允許程序之間以訊息的形式交換資料。有足夠寫許可權的程序或執行緒可往佇列中放置訊息,有足夠讀許可權的程序或執行緒可從佇列中取走訊息。每個訊息都是一個記錄,它由傳送者賦予一個優先順序。與管道不同,管道是位元組流模型,沒有訊息邊界。
linux網路程式設計之POSIX訊息佇列
POSIX IPC名字限定: 必須以/打頭,並且後續不能有其它/ ,形如/somename 長度不能超過NAME_MAX 通過下面的命令將訊息佇列掛載到/dev/mqueue下,可通過cat/dev/mqueue/name檢視訊息佇列狀態 mount -t mqueue
如何將Linux端POSIX標準的程式移植到windows端 (一)
由於專案需要,必須將Linux平臺以POSIX標準改編的Lua直譯器移植到windows平臺下,並且需要在Qt中被多執行緒呼叫。 之前走了很多彎路,這裡現將這些曲折描述下,不過這些方法對於Lua原始碼編譯移植到window平臺來說不失為一種更簡單的方法,不過筆者將Lua的原
Message訊息佇列中多個數據傳遞(Bundle)
MyHandler handler = new MyHandler(handlerThread.getLooper()); Message msg = handler.obtainMessage(); /** * 將Mes
Linux下的訊息佇列MsgQueue
server檔案執行時先收訊息再發訊息,但是server.c中建立了訊息佇列,所以先執行server client檔案執行時先發訊息再收訊息 執行結果:開啟兩個terminal分別進行 comm.h標頭檔案 1 #ifndef _COMM_H_ 2 #define
52.Linux/Unix 系統程式設計手冊(下) -- POSIX 訊息佇列
1.概述 fork() 子程序會接收其父程序的訊息佇列描述符的副本,並且這些描述符會引用同樣的開啟著的訊息佇列的描述。子程序不會 繼承其父程序的任何訊息通知註冊。 當一個程序執行了 exec() 或終止時,所有其開啟的訊息佇列描述符會被關閉。關閉訊息佇列描述符的結
linux程序通訊:使用posix訊息佇列mq進行執行緒或程序間的通訊
POSIX訊息佇列允許程序以訊息的形式交換資料。此API與System V訊息佇列(msgget(2),msgsnd(2),msgrcv(2)等)有明顯不同,但做的事情差不多。 在linux多執行緒程式設計中,如果兩個執行緒沒用共同的資料區,則需要使用訊息佇列從一個執行
Linux POSIX 訊息佇列
程式執行時,服務程序阻塞於mq_receive,客戶程序每發一條訊息佇列,服務程序都會從mq_receive處返回,但不一定接收到的訊息就是客戶程序最近傳送的那一條訊息,因為客戶程序往訊息佇列中新增訊息時會按照優先順序來排序,如果客戶程序同時向訊息佇列新增多條訊息,服務程序還未來得及讀取,那麼
linux IPC之POSIX訊息佇列
1.POSIX概述 前面已經學習了LINUX程序通訊方式的程序和FIFO兩種方式,但是POSIX是與之前兩種不同的方式,主要區別呢,在於使用管道和FIFO的時候,在寫入管道之前,應該有一個程序已經做好了讀的準備,它呢是以無格式的位元組流的方式進行通訊的,如果
linux網路程式設計之POSIX 訊息佇列 和 系列函式
#include<stdio.h>#include<stdlib.h>#include<sys/ipc.h>#include<sys/msg.h>#include<sys/types.h>#include<unistd.h>#includ
Linux-程序通訊-訊息佇列/訊號燈/共享記憶體
訊息佇列 訊息佇列提供了程序間傳送資料塊的方法,每個資料塊都可以被認為是有一個型別,接受者接受的資料塊可以有不同的型別;我們可以通過傳送訊息來避免命名管道的同步和阻塞問題;訊息佇列與命名管道一樣,每個資料塊都有一個最大長度的限制;我們可以將每個資料塊當作是一
Linux程序通訊——訊息佇列
總結下別人比較好的博文+自己寫的一個栗子 1.ftok() https://blog.csdn.net/u013485792/article/details/50764224 &
linux 程序通訊 訊息佇列
1) 2) 3) 4)傳送 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types