; ; @ANO_SCRIPT_NAME ipc_message ; @ANO_SCRIPT_VERSION 0.0.1 ; @ANO_SCRIPT_DESCRIPTION Simple interprocess message send/receive example ; ; @ANO_FLAGS_USE_PROTOS [ ] ; @ANO_FLAGS_VAR_NAME_SUBS [ ] ; @ANO_FLAGS_VAR_WARN_UNUSED [ ] ; ; Copyright (c) 2016-2025, Jani Salonen ; All rights reserved. ; main [exit: 0] { msg_receive (\ queue: "my_queue", \ callback: "msg_cb") ; Message length is zero which is automatically corrected to actual ; length of the message. ; msg_send (\ queue: "my_queue", \ message: "This is interprocess message sent by using message queue.", \ message_length: 0, \ message_prio: 0) ; Sleep one second to make sure message is printed. ; sleep (secs: 1, nanosecs: 0) ; Autoremove attribute in callback function takes care of removing the ; queue. It is ok if there is no more than one message as in this ; example, because queue is removed just after first message is ; processed. Otherwise it should be removed manually using msg_remove() ; call. ; ;msg_remove (\ ; queue: "my_queue") } _MSG_RECEIVE_ contact msg_cb [autoremove: _queue] (\ _queue, _msg, _msg_len) { dump _queue dump _msg dump _msg_len }