Функции mq_*
являются функциями POSIX. Функции msg*
взяты из того, что обычно известно как «System V IPC» (поскольку они являются частью средства IPC, представленного в UNIX System V, которая также включала совместную память и семафоры). Я думаю, что было бы справедливо сказать, что функции msg*
включены в стандарт POSIX и X / Open в большей степени из-за обратной совместимости, чем из-за того, что в противном случае было бы желательно; это может сделать их несправедливыми, но обычно стандарты стараются избежать нескольких способов достижения одного и того же результата. Они не были ни в одной из оригинальных версий POSIX.
Вам нужно подумать, куда вы будете переносить свой код. Я бы предложил использовать более современные mq_*
функции, если они доступны везде, где вам нужно - хотя я сам ими не пользовался. Вообще говоря, функции msg*
использовались реже, чем функции совместно используемой памяти и семафоров, но этот интерфейс был (на десять и более лет) длиннее, чем POSIX, поэтому он мог бы быть более доступным.