繁体   English   中英

Bash 为可执行文件设置无 memory

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM