是否有一种编程方式来限制持续时间、内存使用并以 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/