Отправьте кратные переменные с помощью функции msgsnd

Я хотел бы отправить более одной переменной через mtext параметр msgsndфункция. Я знаю, что это должен быть массив символов char, но все переменные, которые я должен отправить, являются целыми числами. Спасибо!

1 ответ

Решение

Как mtext является массивом символов, он должен иметь элементы в виде символов, но если вы хотите сохранить в нем целые числа, вы можете преобразовать integers в string с помощью sprintf() или пользователь определяет функцию и затем сохранить в mtext

ИЛИ ЖЕ

Вы можете изменить предопределенную структуру (msgbuf) в соответствии с вашим требованием о временном решении, но я не буду советовать вам делать это, потому что тогда вы должны иметь ту же структуру во всем процессе, в котором вы отправляете и получаете.

           struct msgbuf {
               long mtype;       /* message type, must be > 0 */
               char mtext[1];    /* message data */
           }; 

Вы можете добавить дополнительный член в вышеупомянутой структуре. Обязательно ли отправлять целые числа только через эту структуру? Вы можете хранить целые числа в одном массиве и затем вызывать msgsnd() как второй аргумент msgsnd() является буфером, и вы можете передать этот массив в качестве второго аргумента.

 int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);

Я надеюсь, что это помогает.

Другие вопросы по тегам