我正在做一个实验室任务,我们制作一个服务器程序和一个客户端程序。它在QNX OS上。不确定它是否在Linux中运行。大纲如下:
“编写一对C程序msgSender.c和msgLogger.c来演示进程之间传递的Neutrino消息。
您的程序将从shell调用:
$ msgLogger logFileName $ msgSender msgLogger
logFileName是存储消息的日志的名称
msgLogger进程充当记录器。它接收消息并将消息写入文件。
msgSender是一个交互式程序,用于汇编和发送基于文本的消息。
如果从服务器收到MSG_INVALID,则会打印警告
我让msgLogger完全正常工作;这是代码: http://pastebin.com/8AGfGZ5u
这是msg.h文件: http://pastebin.com/3xcBZvnH
以下是我到目前为止msgSender的代码: http://pastebin.com/Buk88Kry
发件人(客户端)需要做的是让用户使用数字输入消息类型。 msg.h文件包含MSG_DATA为1的消息编号类型等。如果输入无效数字,它将要求他们再次尝试,否则它将存储该数字并将其分配给amsg.m_hdr MESSAGE结构。 amsg.m_data是带消息的值。
然后用户输入他们想要的消息,如果他们选择了数字1(msg_data),则服务器发送通知,客户端打印“消息成功接收”,同时消息内容保存到日志文件中。
不幸的是,我遇到了很多问题而且没有记录消息。我明天必须交上msgSender,这也取决于我的下一个实验室。我真的希望能得到一些帮助。
答案 0 :(得分:0)
在客户端写入后尝试刷新缓冲区。如果您在写入文件时没有关闭文件描述符,则无法刷新缓冲区并写入文件。您可以通过调用fsync()确保所有写入同步到您想要的文件。