|
14 | 14 | #include <sstream> |
15 | 15 | #include <string> |
16 | 16 | #include <sys/fcntl.h> |
| 17 | +#include <sys/prlimit.h> |
17 | 18 | #include <sys/resource.h> |
18 | 19 | #include <sys/time.h> |
19 | 20 | #include <sys/types.h> |
@@ -160,24 +161,24 @@ auto main(int argc, char *argv[]) -> int { |
160 | 161 | exit(RS_FAIL); |
161 | 162 | } |
162 | 163 |
|
163 | | - rlimit memlim{}, stalim{}, timlim{}; |
| 164 | + rlimit64 memlim{}, stalim{}, timlim{}; |
164 | 165 |
|
165 | 166 | if (memoryLimitMib > 0) { |
166 | | - memlim = (rlimit){(rlim_t)actualMemoryRLimit, (rlim_t)actualMemoryRLimit}; |
167 | | - stalim = (rlimit){(rlim_t)actualMemoryRLimit, (rlim_t)actualMemoryRLimit}; |
| 167 | + memlim = (rlimit64){(rlim64_t)actualMemoryRLimit, (rlim64_t)actualMemoryRLimit}; |
| 168 | + stalim = (rlimit64){(rlim64_t)actualMemoryRLimit, (rlim64_t)actualMemoryRLimit}; |
168 | 169 | } else { |
169 | 170 | // No memory limit specified, set to infinity |
170 | | - memlim = (rlimit){RLIM_INFINITY, RLIM_INFINITY}; |
171 | | - stalim = (rlimit){(rlim_t)2147483647LL, (rlim_t)2147483647LL}; |
| 171 | + memlim = (rlimit64){RLIM64_INFINITY, RLIM64_INFINITY}; |
| 172 | + stalim = (rlimit64){(rlim64_t)2147483647LL, (rlim64_t)2147483647LL}; |
172 | 173 | } |
173 | 174 |
|
174 | 175 | // Calculate time limit in seconds, rounding up |
175 | | - rlim_t soft_time_limit_sec = (timeLimitMs + 999) / 1000; |
176 | | - timlim = (rlimit){soft_time_limit_sec, soft_time_limit_sec + 1}; // Soft limit + 1 for hard limit |
| 176 | + rlim64_t soft_time_limit_sec = (timeLimitMs + 999) / 1000; |
| 177 | + timlim = (rlimit64){soft_time_limit_sec, soft_time_limit_sec + 1}; // Soft limit + 1 for hard limit |
177 | 178 |
|
178 | | - setrlimit(RLIMIT_AS, &memlim); |
179 | | - setrlimit(RLIMIT_STACK, &stalim); |
180 | | - setrlimit(RLIMIT_CPU, &timlim); |
| 179 | + prlimit64(0, RLIMIT_AS, &memlim, nullptr); |
| 180 | + prlimit64(0, RLIMIT_STACK, &stalim, nullptr); |
| 181 | + prlimit64(0, RLIMIT_CPU, &timlim, nullptr); |
181 | 182 |
|
182 | 183 | if (execlp("bash", "bash", "-c", runCmd.c_str(), NULL) == -1) { |
183 | 184 | perror("execlp"); |
|
0 commit comments