Отправьте кратные переменные с помощью функции 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);
Я надеюсь, что это помогает.