C:从同一文件读取的多个子进程

时间:2017-03-04 02:21:33

标签: c subprocess parent-child

我正在尝试从包含n个子进程的文件大小的文件中读取。我的问题是:如果filesize%subprocesses!= 0,我如何分发filesize以便读取整个文件?我的想法是让其中一个子过程比其他子过程读得少,但我不知道该怎么做。这是我的代码,subprocesses是我fork()的子数。

fstat(infile, &filestatus);
filesize = filestatus.st_size;
fs = (filesize + (subprocesses /2))/subprocesses;

这种舍入的问题是,当我更改子进程时,我无法正确读取infile。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

假设subprocesses > 1filesize > 0,两者都是整数类型,您需要做的只是

 if (filesize % subprocesses == 0)
 {
      fs = filesize/subprocesses;
 }
 else
 {
     fs = filesize/(subprocesses-1);     //  amount to be read by all except the last subprocess

     fs_last = filesize % (subprocesses - 1)    //  amount to be read by the last subprocess
 }

在数学上,fs_last = filesize - (subprocesses - 1)*fs将做同样的事情 - 这是整数算术的属性。

您的下一个问题是与每个子流程进行通信需要读取多少内容。或者确保最后一个子进程知道它是最后一个(因此它不会尝试读取fs个字符而不是fs_last)。