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_MAXの255文字より長くなると停止します。 – ilkkachu