Documentation for mq_unlink說mq_unlink的限制是多少?
ENAMETOOLONG 名太長。
但這是什麼限制?我認爲這是NAME_MAX
,但事實並非如此。下面的代碼永遠運行(只要有內存,我猜)。
#include <mqueue.h>
#include <string>
#include <errno.h>
#include <unistd.h>
int main(void)
{
std::string tooLong = "long";
do
{
usleep(10);
tooLong.append("longer");
mq_unlink(tooLong.c_str());
}
while(errno != ENAMETOOLONG);
}
那麼什麼是極限?這個函數何時返回ENAMETOOLONG
?
您應該在假定出現錯誤之前檢查函數的返回值。它也似乎是你的名字可能是不正確的格式。 http://man7.org/linux/man-pages/man7/mq_overview.7.html –
就我可以測試的情況而言,當字符串變爲257個字符長時,即比NAME_MAX255更長時,它停止。 – ilkkachu