ada - 如何序列化和反序列化私有(private)类型?

标签 ada

我正在使用 GNAT.OS_Lib 模块来实现 Linux 进程管理器。我正在使用该模块中的子程序来生成进程并获取 PID,现在我想将这些 PID 保存到一个文件中,以便稍后可以检索它们以终止进程、获取其状态等。问题是, Process_Id 类型是私有(private)的:

type Process_Id is private; -- s-os_lib.ads, line 743

该模块提供了Pid_To_Integer函数,但不提供反函数。如何序列化和反序列化 Process_Id

最佳答案

学习《Ada 语言引用手册》中的 K.2“语言定义属性”http://www.ada-auth.org/standards/12rm/html/RM-K-2.html

要研究的属性是 S'Read、S'Write。

您的文件必须创建为流文件。 Process_Id'Write 属性将序列化并写入流文件。 Process_Id'Read 属性将读取并反序列化文件中的数据。

如果由于复合类型的性质,S'Read 和 S'Write 不适合您,您应该使用 S'Input 和 S'Output 属性,它们将读取和写入任何边界或判别式。

S'Input 和 S'Output 适用于所有类型。

关于ada - 如何序列化和反序列化私有(private)类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72495486/

相关文章:

Ada 无模式子程序参数

d - Nimrod 中类似 Ada 的类型

ada - Ada 和 GNATStudio 的路径问题

string - Ada:让用户输入字符串(1..10)并用空格填充其余部分

Ada 函数参数是否作为访问类型

export - 使用 pragma 约定而不导出

assembly - Ada 和组装

C++ 到 Ada 的指针和异常

multithreading - Ada95 中的线程和信号量

c - 在Ada中实现变量数据耦合到函数中(类似于C中函数中的静态变量)