Bash (WSL): 无法限制使用 ulimit -f 写入的文件的大小

Bash (WSL): Unable to limit the size of files written using ulimit -f

晚上好。

我有一个简单的 C++ 程序 infinite_print.cpp 写了 400,000 行 "abcde...xyz".

在另一个 bash 脚本 script.sh 中,我执行了所述 C++ 代码并将输出重定向到 output.txt,即 ./infinite_print.exe > output.txt.

我尝试通过设置 ulimit -f 10 来限制使用此 bash 脚本创建的 output.txt 的大小,但失败了。 output.txt 的结果大小为 11MB。

Whosebug 说我还不允许将屏幕截图附加到我的问题中,因此可以在此 link here.

中找到执行 script.sh 的屏幕截图

我尝试阅读 man bash,然后搜索 /ulimit、谷歌搜索等,但仍然不知道我做错了什么...

出于绝望,我创建了这个帐户并发布了这个问题。非常感谢所有帮助:(

编辑:在相关的地方,我在 WSL 上使用 Bash(Linux 的 Windows 子系统)。

infinite_print.cpp 的源代码:

1  #include <bits/stdc++.h>
2  using namespace std;
3
4  int limit = 400000;
5
6  int main() {
7      for (int i = 0; i < limit; ++i) {
8          cout << "abcdefghijklmnopqrstuvwxyz\n";
9      }
10 }

script.sh 的源代码:

1  #!/bin/bash
2
3  printf "Current ulimit: "; ulimit -f
4
5  # Set new ulimit.
6  ulimit -f 10
7  printf "New ulimit: "; ulimit -f
8
9  g++ infinite_print.cpp -o inf.exe
10 ./inf.exe > output.txt
11
12 ls -lh output.txt

bash 的手册页指出: 在允许此类控制的系统上,提供对 shell 及其启动的进程可用资源的控制。

查看屏幕截图,这些权限表明您不在 Linux 或其他一些 Unix 系统下 运行。也许您在 Windows 上 运行 使用 Linux 子系统并且 Windows 不支持这些设置。

它在这里确实有效...