gpt4 book ai didi

c - Unix 上 C 中的文件写入程序停留在 508 个打开/关闭周期

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

我用 C 编写了一个程序,用于将一系列字符写入文件——5 个字母数字,后跟一个 (char)(30),一个“记录分隔符”字符,重复...没有换行符。该程序能够完美地循环,直到它到达第 508 次迭代——3048 个字符——然后死掉,说我无法访问该文件。

程序的结构需要在每次写入此序列时关闭并重新打开文件(该脚本是更大的伪数据库模拟模块的一部分),因此打开/写入/关闭有 508 个循环过程...在我开始剖析数据库模块代码之前(其中有很多行,所以如果可以避免的话我宁愿不必这样做),我想知道是否有人知道很少遇到的 read/Unix 中的写入限制,或者在特定时间限制下文件中的 3048 个字符的问题,或者文件中的 508 {30} 的问题,或者类似的简单(但难以捕捉)的问题。我尝试将读/写延迟几毫秒,以防它在关闭时意外打开,或者像那样绊倒自己,但没有雪茄。

最佳答案

508 可疑地接近 512,这是打开文件数的合理默认值。键入命令 ulimit -a 并查看施加了哪些限制。在我的 Fedora 15 系统上,1024 是每个进程打开文件数的限制:

[wally@lenovotower ~]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 22084
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

如果您的是 512,请确保程序确实正在关闭文件。在不显示一些代码的情况下,我们所能做的就是推测。

关于c - Unix 上 C 中的文件写入程序停留在 508 个打开/关闭周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862371/

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