【发布时间】:2013-07-09 11:56:41
【问题描述】:
我只是偶然发现了这个问题。我试着写了一个很基础的Makefile目标:
core: myprogram
ulimit -c 10000
./myprogram
ulimit -c 0
这个想法是将核心大小限制设置为适当的值,使程序崩溃,然后将核心大小限制重置为零。当我调用此规则时,我收到以下错误消息:
$ make core
cc -Wall -Wextra -m32 -g -o example example.c
ulimit -c 100000
make: ulimit: Command not found
make: *** [core] Error 127
首先,我有点惊讶,但我认为问题在于ulimit 是一个内置的shell。而且,令人惊讶的是(至少对我而言),这些内置函数无法从 Makefile 调用。
此外,ulimit 既可以是一个内置函数(在我的 Debian 上就是这种情况)或一个二进制程序(/usr/bin/ulimit)。
所以,我的问题很简单,如果可能的话,如何以优雅和便携的方式解决这个问题,并从 Makefile 内部调用内置函数?
【问题讨论】:
-
不,
ulimit不是内置的 shell。 (考虑到它提供的功能,它怎么可能是一个?) -
那为什么我有一个
/usr/bin/ulimit可执行文件? -
这是两个不同的东西。就像
test或其他人一样。许多内置函数复制二进制程序。但是,这是首先使用的内置函数。