msgsnd的乙個小問題

2021-09-07 13:21:05 字數 779 閱讀 5207

今天寫了乙個system v訊息佇列的小樣例。定義了乙個例如以下的結構體:

#define msg_size 8192

struct request

;

接著我呼叫msgsnd想把這個結構體傳送給server。可是發現報錯了:

msgsnd error, invalid argument

細緻檢查了傳入msgsnd的每個引數,確認都沒有問題啊,那這個invalid argument是哪乙個引數呢?

沒辦法僅僅能再細緻看一遍msgsnd的man手冊吧。看到msgsnd的錯誤碼einval的時候貌似發現問題在那裡了:

einvalinvalid msqid value, or nonpositive mtype value, or invalid msgsz value (less than 0 or greater than the system value msgmax).

問題應該是我傳送的msgsz超過了系統的最大值msgmax,檢視一下系統的msgmax:

lxg@lxg-x240:~/station/tlpi/chapter_45$ cat /proc/sys/kernel/msgmax

8192

系統的msgmax為8192。而我傳送的msgsz為8196,超過了系統的最大值。所以就報錯了。

乙個小問題

error c2679 binary no operator defined which takes a right hand operand of type class smanip int or there is no acceptable conversion 除錯了好久,就是找不出問題在哪。...

乙個小問題。

drop table student create table student sno number 10 sname varchar2 10 sage int insert into student values 1,aa 21 insert into student values 1,aa 21...

乙個小問題

設機器字長w ww位元,u w w u cu w,w uc u w,w uc。將w ww分為c cc個連續長度為u uu位元的區間,稱為u uu區間。實現操作 對於乙個機器字x xx,如果乙個u uu區間非0,則將區間最右bit置1,其餘為0。要求演算法時間為o 1 o 1 o 1 考慮異或操作。對...