[英]Bash set no memory for an executable
所以我正在为我的 C 程序在 bash 中编写一个测试仪。 其中一个测试用例应该是在memory分配条件下的某个malloc
下程序是否正确输出“Error!program ran out of memory”。 这是我在 bash 中尝试做的事情
echo =======TEST 10=========
echo Veryfing program output for out of memory.
(set memory allocation for executable 0) [<- pseudocode here]
output=`./executable input.csv output.csv`
if [[ "$output" != "Error! program ran out of memory" ]]; then
(...)
fi
C程序中具体的memory分配失败条件为
struct Record *temp = (struct Record *) malloc(sizeof(struct Record));
if(temp == NULL){
printf("Error! program ran out of memory");
return(1);
}
我已经在网上彻底搜索了如何实现这一点,但我似乎找不到为此的语法。 有人对我如何为 bash 脚本下的可执行文件设置特定的 memory 分配有任何提示吗?
output=`ulimit -v <limit> > /dev/null; ./executable input.csv output.csv`
注意,如果限制太小,shell 可能无法执行程序。
这是它如何工作的演示。
程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
if (malloc(10000000) == NULL)
printf("oom\n");
else
printf("ok\n");
}
脚本:
#!/bin/bash
T=`./m`
U=`ulimit -v 10000 > /dev/null ; ./m`
echo T=${T}
echo U=${U}
Output:
T=ok
U=oom
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.