我正在使用 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/