C语言 操作系统进程和管道



我正在尝试制作一个操作系统项目,但我遇到了一些问题。在此项目中,我有四个子进程,分别是发送方、加密器、解密器和接收方进程,以及一个父进程。

父进程应向发送方进程发送消息作为参数,发送方将通过管道将消息发送到加密器,加密器将

发送到解密器,解密器也结束将消息发送给接收方进程。

父进程如何在不使用管道的情况下将消息发送到发送方进程?

这个问题听起来有点模棱两可。您能否提供有关这些过程的详细信息。

但据我了解,你为什么不简单地将发件人从父级分叉出来。父级中的消息将自动复制到发件人子级中...

正如 ayushi1794 在答案中正确指出的那样,这个问题被低估了。初始(父)进程从何处获取应将消息传递给发件人?

选项包括:

  1. 命令行参数(字符串形式)。
  2. 命令行参数(作为包含消息的文件的名称)。
  3. 编译时常量字符串。
  4. 从标准输入读取的数据(有或没有提示)。

在一个层面上,父级不需要将任何东西传递给sender进程;它有一个父级中所有内容的完整副本,至少在它第一次分叉时是这样。目前尚不清楚sender是主程序的一部分,还是将要执行的单独可执行文件。如果它只是主程序中的一个函数,那就更简单了(加密器、解密器和接收器也是如此)。

在编写代码时,请记住确保可以对其进行调试。 确保进程标识自己,并打印输入和输出的适当表示(我知道您认为加密器的输入与发送者的输出相同,但请确保您确实得到了您认为得到的内容 - 您是否为字符串获得了空终止符, 例如? 请记住,加密数据通常是任意二进制字符流;它很可能包含嵌入的零字节。

最新更新