Changing stack size of system shell
4 次查看(过去 30 天)
显示 更早的评论
I'm calling several pieces of FORTRAN code from within MATLAB using the system command as such:
system(['myFORTRANcode ', num2str(input variable)]);
This works great but one of the FORTRAN programs requires a stack size larger than the default 8192kB. I'm using Linux. If I was running the FORTRAN program from a standard terminal shell, I would simply use
ulimit -s unlimited
However, the ulimit command doesn't seem to work within the MATLAB shell interface, ie I cannot simply type:
system('ulimit -s unlimited');
The command doesn't error, but it doesn't change anything either. Using
system('ulimit -s');
to echo the stack size back returns 8192 as before, instead of the (expected) unlimited.
Any ideas? I don't understand how ulimit alters the stack size, nor do I have a good handle on MATLAB's memory issues with respect to its system shell.
0 个评论
采纳的回答
Walter Roberson
2012-1-24
ulimit -s unlimited has to be run in the same shell session as your code. Each system() call invokes a new shell.
system(['ulimit -s unlimited; myFORTRANcode ', num2str(input variable)]);
更多回答(1 个)
Jason Ross
2012-1-26
You can change a lot of these parameters at the system level. It generally starts with editing limits.conf and making a few alterations to some of the PAM module configuration files. You didn't state what distro you are using, but google has some decent howtos on how to set this up so that the limit is set to higher value (or unlimited). It sounds harder than it is :)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fortran with MATLAB 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!