【问题标题】:Pipe type message detection管道类型消息检测
【发布时间】:2015-04-21 19:49:02
【问题描述】:

在某些 C 代码中,我有一个父进程通过 PIPE 通道从子进程读取消息。 子进程将发送 0 到 9 之间的整数值或字符串 (char *) 消息。
在父进程中,如何测试子进程是否发送了整数值或字符串(char *)消息?

非常感谢!

【问题讨论】:

    标签: c unix pipe fork


    【解决方案1】:

    管道处理非结构化二进制数据(就像所有其他文件一样),因此唯一的判断方法是传递更多数据,例如指示接下来将发送什么的标志。如果您正在处理一个大型项目,您可以使用像 Google 的 Protocol Buffers 这样的序列化系统来简化您的工作。

    当然,在您的特定情况下,如果消息是整数,您可以依赖消息的第一个字节为零,但这是一个家庭作业级解决方案:)

    【讨论】:

    • 他是否可以依靠第一个字节为零来区分数字和字符串取决于系统的字节顺序,以及是否必须支持空字符串。将通信包装在某种协议中的想法要好得多,无论是固定协议还是自产协议。
    • 感谢您的回答! :)
    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 2011-03-30
    • 2021-02-21
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多