il ne faut pas definir une nouvelle proc: `mq_open` in posix.nim c'est
`varargs`, alors elle va accepter `(cstring,cint...)`
You don't need a new proc: `{.importc varargs.}` procs accept multiple
arguments. The documentation for posix could be revised to reflect that.
import posix, strformat
const QMname = "/QMname"
template check(assertion: untyped, msg: typed): untyped =
if not assertion: echo msg, &": {strerror(errno)}"
proc main() =
let attr = MqAttr(mq_maxmsg: 99, mq_msgsize: 1024)
let p_attr = attr.addr
let mq = mq_open(QMname, O_CREAT or O_RDWR or O_EXCL, 0o644, p_attr)
check(mq >= 0, "Error opening queue")
check(mq_getattr(mq, p_attr) >= 0, "Error getting attrs")
echo &"getattr--> {attr.mq_flags} -- {attr.mq_maxmsg} --
{attr.mq_msgsize} -- {attr.mq_curmsgs}"
#cleanup
dealloc(attr)
discard mq_close(mq)
discard mq_unlink(QMname)
main()
Run