gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 03:24:12 25 4
gpt4 key购买 nike

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

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

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

最佳答案

假设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)。

关于C:多个子进程从同一个文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42591334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com