Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 进程创建和控制-同步_C - Fatal编程技术网

C 进程创建和控制-同步

C 进程创建和控制-同步,c,C,我在这个问题上有个问题 您将实现一个代码破解系统。系统将部署四个进程 p1、p2、p3和p4尝试猜测加密代码的密码。 对于加密,我们认为公式是:c= p xor k,其中 C = encrypted code P = plain text K = key 对于解密,公式是:p=cxor K。因此,您的程序将尝试使用 这个公式。异或运算符是^。 给定加密代码C和纯代码P,您的程序应该部署三个进程 尝试查找用于加密普通代码的密钥。这三个过程将在审查中 过程P1的控制。 所有进程将其结果发送到进程P

我在这个问题上有个问题 您将实现一个代码破解系统。系统将部署四个进程 p1、p2、p3和p4尝试猜测加密代码的密码。 对于加密,我们认为公式是:c= p xor k,其中

C = encrypted code
P = plain text
K = key
对于解密,公式是:p=cxor K。因此,您的程序将尝试使用 这个公式。异或运算符是^。 给定加密代码C和纯代码P,您的程序应该部署三个进程 尝试查找用于加密普通代码的密钥。这三个过程将在审查中 过程P1的控制。 所有进程将其结果发送到进程P1,进程P1将终止三个进程 处理并显示加密密钥和解密文本(三者中的任何一个) 进程找到密钥。 为了简单起见,我们将把原始数字P存储在一个名为 而加密的代码存储在一个名为cipher.txt的文件中。只考虑 数字存储在这些文件中,其范围在0到100000000之间。 所以我们有P和C你的程序应该找到关键K。 数字介于0和1000000之间

我的问题是我可以使用多少信号量?每一个的价值是多少??
如果这是问题的精确减少,我不需要帮助我编写代码,只需要输入信号量的数量:

三个辅助进程中的任何一个完成其工作后,主进程 解雇所有3名工人


然后,您应该只需要1个信号量,主机将等待该信号量,并且每个工作进程将在完成时发出信号,第一个信号量将解除主机的阻塞,以便它可以终止工作进程。事实上,你只需要一个互斥体,而不是一个完整的信号量。

当你真正试图理解信号量是如何工作的时候,为什么你要在我们身上扔下大量无关的作业呢?我很确定我可以在没有信号量的情况下做到这一点,但我想这不是任务;好的,当3个进程中的一个找到密钥时为true,父进程将其杀死。但是如果我不使用信号量,为什么我需要三个进程呢?你需要三个进程,这样这三个工作进程就可以独立运行;信号量是用于告知P1作业何时完成的机制,因此它可以终止工人。我想Mats是说他可以在没有信号灯的情况下完成通信。只使用没有信号灯的管道是正确的吗?当其中一个进程找到K时,告诉父进程并通过管道发送值?好的,当三个进程中的一个找到密钥时,为真,父进程将其杀死。但如果我不使用信号量,为什么我需要三个进程呢?