我試着在POSIX創建message_queue與C. 至於我可以告訴時收到錯誤號22,可通過比較示例代碼在網絡上,我已經正確設置了參數。爲什麼設置errno爲22:mq_open()POSIX
這裏是一個片段:
int open_flags;
mqd_t mqfd;
int bytes_per_msg;
struct mq_attr attr;
unsigned int* msgbuff;
printf("from 1 to 400, what is N? : ");
scanf("%d", &n);
bytes_per_msg = (n + 1) * (sizeof(unsigned int));
msgbuff = (unsigned int*)malloc(bytes_per_msg);
open_flags = O_CREAT|O_RDWR;
attr.mq_maxmsg = n;
attr.mq_msgsize = bytes_per_msg;
attr.mq_flags = 0;
mqfd = mq_open("/myqueue", open_flags, 0666, &attr);
if(mqfd == -1){
printf("queue creation failed, ERRNO: %d\n",errno);
}
編輯:我不爲更加清晰的歉意。 Errno 22是無效的。 故障代碼的含義--The可以在errno.h中
檢查errno用'perror()'指的是什麼。 – teppic 2015-04-01 04:00:04
errno的整數值是無用的!由errno索引的消息是無價的。人們是如何意識到errno的存在並且不知道「perror」和「strerror」? (這是一個嚴重的問題;你從哪裏學到了errno,並沒有學到使它有用的兩個函數?) – 2015-04-01 04:07:43
你可以查看errno在errno.h上的含義。 使用perror導致相同的結論:錯誤22:無效的參數> 我試圖找出什麼是我的論點無效。 我不記得我在哪找到了errno而沒有錯@WilliamPursell – Chris 2015-04-01 04:45:06