LINUX.ORG.RU

Подскажите варианты решения(C++ /system("..."))


0

0

сокет сервер принимает от клиента строку типа: 
/PathTo/script.sh paranm1 param2
выполняем так:
int i  = system(cmd.c_str());
в script.sh запускается mencoder который берет по сети файл (param1)
кодирует в другой формат и ложит по другому сетевому пути (param2)
соединение держится до тех пор пока файл не перегонится, и отсылается клиенту сообщение что все тип топ. 
Вопрос в следующем, кто то выдернул сетевой кабель, либо просто проблемы с сетью, ессно файл не перегнался и mencoder выдал ошибку, как отловить это ??? 
 

А в чём проблема? Пусть script.sh возвращает код ошибки, если mencoder выполнился с ошибкой, а ты в программе анализируй значение, возвращаемое system.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

> Пусть script.sh возвращает код ошибки

только в этом случае код не должен быть равен -1, ибо это сигнализирует о внутренней ошибки system()

asgard
()
Ответ на: комментарий от asgard

Ага..так и сделано:

int i  = system(cmd.c_str());
 if(i == -1)
 {
  answer = "err";
 }
 else answer = "ok";

А в скрипте я так понял что то вроде этого нужно замутить:

err = $Mencoder $1 -o $2 $OAC $OVC

и отлавливать что скажет err ???

Fastman
() автор топика
Ответ на: комментарий от Fastman

Нет, надо примерно так:

int i  = system(cmd.c_str());
if(i == -1)
{
   answer = "internal error";
}
else if (i != 0) {
   answer = "mencoder failed";
}
else answer = "ok";

А в скрипте надо

$Mencoder bla-bla-bla || exit $?

Legioner ★★★★★
()

И по-моему вы изобрели telnet, только испорченный.

Dr_ZLO
()

за "ложит" руки или язык отрывать надо...

anonymous
()
Ответ на: комментарий от Legioner

Спасибо за разумные вменяемые подсказки :) Работает !

>>И по-моему вы изобрели telnet, только испорченный.
Всем нормально работающим программистам приходится иногда 
изобретать велосипеды. Хотя и не нравиться.

>>за "ложит" руки или язык отрывать надо...
Критика принята к сведению. :))))

Fastman
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.