系统C命令和内存限制?

系统C命令和内存限制?,c,system,C,System,好的,我目前正在尝试调试win2003服务器上的一个问题。基本上,我们有一个调用C的system()函数的古老程序。现在,我基本上可以追溯到这样一个事实:当system()运行应用程序时。该应用程序只能访问大约500兆字节的内存。但是,如果我自己手动运行应用程序,它运行良好 系统命令和内存是否存在某种限制因素 编辑 好的,再详细说明一下。我们有一个自动处理系统,它基本上接收一个输入文件并在上面运行一系列应用程序。在过去12年左右的时间里,这种方法一直运作良好。但现在我们正在使用ArcEngine

好的,我目前正在尝试调试win2003服务器上的一个问题。基本上,我们有一个调用C的
system()
函数的古老程序。现在,我基本上可以追溯到这样一个事实:当system()运行应用程序时。该应用程序只能访问大约500兆字节的内存。但是,如果我自己手动运行应用程序,它运行良好

系统命令和内存是否存在某种限制因素

编辑

好的,再详细说明一下。我们有一个自动处理系统,它基本上接收一个输入文件并在上面运行一系列应用程序。在过去12年左右的时间里,这种方法一直运作良好。但现在我们正在使用ArcEngine(ESRI图像处理)处理越来越大的图像(遥感)。现在我们基本上有以下几点:

输入文件进入->由处理系统拾取->通过调用system()逐个执行一组预定义任务

现在,当涉及到ESRI应用程序时,系统在试图将图像读入内存时崩溃。我不能通过部分读取映像文件来解决这个问题,因为这就是他们的sdk的工作方式。我还做了一个测试,创建了一个veru simple C程序,强制分配内存,并查看它何时崩溃。它几乎正好在512MB左右崩溃。我在网上到处找了找,什么也找不到

编辑2

我只是做了一些古怪的测试。我基本上写了一个小C程序,通过system()调用应用程序。就这样,它在同一个地方坠毁了。当我调用这个程序时,系统有2.5GB的可用内存(共3个)。然后,我基本上编写了一个python脚本,它使用了subprocess和popen,运行良好。将python脚本添加到自动处理系统也可以正常运行

可能是什么在做这件事

编辑3


Python脚本和处理系统都作为同一用户运行。唯一的区别是处理系统作为服务运行,以用户身份登录。

在system on(系统开启)上使用时,没有提到对生成的进程的任何内存限制

系统调用返回了哪个错误代码?内存不足返回代码是ENOMEM(12)

但是需要注意的一点是,不推荐使用system,请尝试使用CreateProcess运行它

编辑:另一件要检查的事情是在什么权限级别执行此应用程序。应用程序的运行用户是否与您的运行用户相同


Edit2:您可能还需要检查Windows,因为它可以用来限制给定作业组的内存使用。

如果您在自动处理系统之外手动运行程序,您会说程序运行正常。您能否修改程序,使其在系统处理图像时定期显示可用内存量?如果在第一次调用SDK之前获得可用内存值,则可以确定SDK在处理映像时使用的内存量。如果结果超过512MB(或者不管您的限制是什么),那么您知道问题在于SDK需要的内存比您现有的内存更多


如果您无法进入图像处理,则需要创建一个定时进程,定期显示可用内存量。

请详细说明,崩溃是否与它只访问500MB内存有关?您是否检查了我提出的建议?python脚本是否以与C中程序不同的用户身份运行?