# Компьютерные технологии > Прикладное программирование > C\C++ >  Помогите с консольной прогой

## coolspot

Итак, есть С++ прога, которую хочется запустить как CGI:
using namespace MagickLib;
#include <wand/MagickWand.h>
#include <cstring>

std::string filePath="sample.gif";
MagickWandGenesis();
MagickWand *sourceImages, *coalescedImages, *resImages;
sourceImages = NewMagickWand();
coalescedImages = NewMagickWand();
resImages = NewMagickWand();
MagickBooleanType status;
status=MagickReadImage(sourceImages, filePath.c_str());
if(status==MagickFalse) Warning("Error. Can't read image", 1);
coalescedImages = MagickCoalesceImages(sourceImages);
int i=0;
MagickBooleanType whileFlag = MagickTrue;
PixelWand *textColor;
textColor=NewPixelWand();
double stringColors[3];
Line::GetStringColor(stringColors);
PixelSetRed(textColor, 1);
DrawingWand *drawString;
drawString=NewDrawingWand();
DrawSetStrokeColor(drawString, textColor);
DrawSetFillColor(drawString, textColor);
DrawAnnotation(drawString, 5, 50, (const unsigned char*)("Test - Тест"));
while(whileFlag){
MagickDrawImage(coalescedImages, drawString);
//MagickResizeImage(coalescedImages, 200, 50,LanczosFilter,0);
whileFlag=MagickNextImage(coalescedImages);
i++;
}
//std::cout << "Content-type: text/html\r\n\r\n";
//std::cout<<i<<"\n";
unsigned char *out;
size_t *outLength;
std::cout<<"Before write function - all is okay!\n";
std::fflush(stdout);
std::freopen("stdout.txt", "w", stdout);
std::freopen("stderr.txt", "w", stderr);
out = MagickGetImageBlob(coalescedImages,outLength);
std::cout<<"After write function - all is okay!\n";
std::fflush(stdout);
std::fflush(stderr);
MagickWandTerminus();

Компилятор g++ не ругается, прога из под консоли запускается и успешно работает. НО в режиме CGI не работает. Заголовки выводит - всё как надо. Но как доходит до строчки MagickGetImageBlob(...) - процесс завершается. Причём нет следов ни в логах ни в стандартном выводе (который я уже от отчаянья перенаправил в файлы). Если строчку MagickGetImageBlob(...) закомментировать - прога запускается как CGI и работает до конца. 

Процесс лист во время исполнения CGI выглядит примерно так:
  PID  TT  STAT      TIME COMMAND
 4223  И  SN     0:00,06 sshd: u51990@ttyp0 (sshd)
45775  И  S      0:00,04 /usr/local/apache-php5/bin/suexec u51990 u51990 cgi line
45778  И  R      0:00,01 line
 4227  p0  SNs    0:00,05 -bash (bash)
45880  p0  RN+    0:00,00 ps ax

КОРОТКО: чем так отличается запуск приложения как CGI, что одна конкретная строчка вылетает прогу без ошибок?

----------

