Прерывание из другой программы
От: erslgoeirjh Россия http://russianfellow.livejournal.com
Дата: 08.11.10 20:57
Оценка:
Есть программа prog1.exe, которая запускает программу prog2.exe (консольное приложение). Программа prog2 написана на C++. Будем считать для простоты, что программа prog1 тоже написана на C++. Тогда программа prog1 вызывает программу prog2, например, следующим образом:

#include "stdafx.h"
#include "windows.h"

void main()
{
  STARTUPINFO cif;
  ZeroMemory(&cif,sizeof(STARTUPINFO));
  PROCESS_INFORMATION pi;
  if (CreateProcess("c:\\windows\\notepad.exe",NULL,NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi)==TRUE)
  {
    // действия;
    Sleep(1000); // подождать
    TerminateProcess(pi.hProcess,NO_ERROR); // убрать процесс
  }
}


(Можно запустить и другими способами--через WinExec или через ShellExecute).

Программы prog1 и prog2 обмениваются данными через текстовые файлы.

Вопрос: как в программе prog2 отследить то, что она прерывается и обработать это прерывание? Как записать данные из программы prog2 в текстовой файл, чтобы запись прошла успешно при прерывании?

В базах данных есть такое понятие, как транзакция. Это когда группа команд объединяется в единое целое. Если все команды в этой группе прошли успешно, то происходит commit (подтверждение), а если хотя-бы одна команда не выполнилась, то происходит rollback (откат).

В моём случае не используются базы данных. Можно ли, тем не менее, несколько команд записи в файл в программе prog2 объединить в одну группу, чтобы либо все эти команды были выполнены, либо ни одна из них не была выполнена?
Пу и Ме сидели на трубе...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.