Testing 正在尝试为QNX函数MsgReceive()、MsgSend()和MsgReply()编写基本测试

Testing 正在尝试为QNX函数MsgReceive()、MsgSend()和MsgReply()编写基本测试,testing,qnx,Testing,Qnx,我正试图编写一个简单的测试用例来测试MsgReceive、MsgSend和MsgReply,但我觉得我基本上误解了这些函数是如何工作的。以下是我的尝试: printf("Testing MsgReceive()...\n"); printf("Receives message and place it into a buffer.\n"); chid = ChannelCreate(_NTO_CHF_SENDER_LEN); if(chid == -1){

我正试图编写一个简单的测试用例来测试MsgReceive、MsgSend和MsgReply,但我觉得我基本上误解了这些函数是如何工作的。以下是我的尝试:

printf("Testing MsgReceive()...\n");
printf("Receives message and place it into a buffer.\n");
chid = ChannelCreate(_NTO_CHF_SENDER_LEN);
if(chid == -1){
    printf("ChannelCreate FAILED!");
}
coid = ConnectAttach(0, 0, chid, _NTO_SIDE_CHANNEL, 0);
pid = fork();
if(pid == -1){
    return;
}
            
if(pid == 0){
    msgSend = MsgSend(coid, writemsg, 13, buffer, 13);
    if(msgSend == -1){
        printf("Child FAILED: %d\n", msgSend);
    }
}
else{
    msgRec = MsgReceive(chid, buffer, 13, NULL);
    printf("Sent Message: %s\n", buffer);
    if(msgRec == -1){
        printf("Parent FAILED: %d\n", msgRec);
    }
}
if(pid == 0){
    if(ChannelDestroy(chid) == -1){
        printf("ChannelDestroy() failed.\n");
    }
}

我创建一个通道,然后将进程连接到该通道。我用叉子叉,让孩子发送信息,让家长接收。但我永远无法让孩子送去。它总是失败。

它到底是如何失败的?发生了什么?它到底是如何失败的?会发生什么?