hello,

I apply what we do in C but it does not work moreover I cannot do O_CREAT | 
O_RDWR

le resultat:
    
    
     myPid--> 98118
    mq_flags
    mq_maxmsg
    mq_msgsize
    mq_curmsgs
    Init-->  0 -- 9999 -- 1024 -- 0
    mq_open
    mqd_t--> -1   *****error
    ctrl--> -1 *****error
    getattr-->  0 -- 9999 -- 1024 -- 0
    
    
    Run

source: 
    
    
     posix
    import strformat
    
    let QUEUE_NAME  = "QMname"
    let MAX_MSG     = 9999    # nbr max de message
    let MSGTXTLEN   = 1024  # msg text length
    var myPid : Pid
    var mqd_t : Mqd
    
    var mqd_a : MqAttr
    
    proc main() =
      echo "getpid"
      myPid = getpid()
      echo fmt" myPid--> {myPid}"
      
      # initialize the queue attributes
      echo "mq_flags"
      mqd_a.mq_flags = 0
      echo "mq_maxmsg"
      mqd_a.mq_maxmsg = MAX_MSG
      echo "mq_msgsize"
      mqd_a.mq_msgsize = MSGTXTLEN
      echo "mq_curmsgs"
      mqd_a.mq_curmsgs = 0
      echo fmt"Init-->  {mqd_a.mq_flags} -- {mqd_a.mq_maxmsg} -- 
{mqd_a.mq_msgsize} -- { mqd_a.mq_curmsgs}"
      
      # create the message
      echo "mq_open"
      mqd_t = mq_open(QUEUE_NAME, O_RDWR) # impossible  O_CREAT | O_RDWR
      echo fmt"mqd_t--> {mqd_t}"
      
      var ctrl = mq_getattr(mqd_t, mqd_a.addr)
      echo fmt"ctrl--> {ctrl}"
      echo fmt"getattr-->  {mqd_a.mq_flags} -- {mqd_a.mq_maxmsg} -- 
{mqd_a.mq_msgsize} -- { mqd_a.mq_curmsgs}"
    main()
    
    
    Run

compil :
    
    
     [ "$mode" == "TEST" ] ; then
            ( set -x ; \
                    nim  c -f --gc:orc -d:useMalloc --panics:on \
                            --hint[Performance]:off  --warning[Deprecated]:on 
--warning[EachIdentIsTuple]:on \
                            --threads:on \
                            --passL:-no-pie \
                            -o:$projet_bin   $projet_src ; \
            )
    fi
    
    
    Run

Reply via email to