c - 如何在 Linux 中以编程方式限制程序运行时间、内存使用以及作为特定用户

标签 c ruby cpu-usage memory-limit least-privilege

是否有一种编程方式来限制持续时间、内存使用并以 C/C++ 或 Ruby 中的 Linux 程序执行的特权较低的用户身份运行?

因为系统或 `` 不能这样做。

sprintf(cmd_str,"/tmp/pro-%d < /tmp/in.txt > /tmp-%d.txt",id,id);
system(cmd_str); // in C

`/tmp/pro-#{id} < /tmp/in.txt > /tmp/out-#{id}.txt` // in Ruby

这两条语句都使该命令以与执行者相同的用户身份运行,并根据需要使用全部处理能力和内存。

最佳答案

使用seteuid(2)系统调用;设置调用进程的有效用户 ID。

以下是 Ruby 示例(参见 Process::Sys.seteuid)

Process.uid    # => 0
Process.euid   # => 0
Process::Sys.seteuid(1000)  # Etc::getpwnam('falsetru').uid == 1000
Process.uid    # => 0
Process.euid   # => 1000

关于c - 如何在 Linux 中以编程方式限制程序运行时间、内存使用以及作为特定用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21659424/

相关文章:

c - 如何在 C 中通过 libcurl 使用 cookie 和 postfields?

c - 我需要释放固定长度的字符数组吗?

在 C 中正确比较字符串

ios - 在 iOS 上跟踪应用程序的 CPU 使用率

mysql - MySQL 查询的最大 CPU 使用率和超过 60 秒的执行

c - 害怕 c 中的奇怪行为

Ruby Native Extension - 手动编译

ruby - 希望正则表达式在第一次出现 "."和 ";"时停止

ruby 心印 : Why convert list of symbols to strings

windows - 如何在 Windows 上限制进程的 CPU 使用率? (需要代码,而不是应用程序)