Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Job Object или CreateProcess   Найти похожие ветки 

 
v][x ©   (2004-03-01 17:52) [0]

Люди, проблема такая:
Запускаю процесс через CreateProcess, помещаю его в Job.
Процесс пытается создать на диске файл и записать в него чего-нибудь. И тут начинается фигня: файл, видимо по причинам TSecurityAttributes, не создается. Че делать люди?
В CreateProcess и CreateJobObject запихиваю стуктуру, заполненную так:

   sa:TSecurityAttributes;
...
   sa.nLength:=SizeOf(sa);
   sa.lpSecurityDescriptor:=nil;
   sa.bInheritHandle:=true;


 
Игорь Шевченко ©   (2004-03-01 18:04) [1]

Что говорит GetLastError ?


 
v][x ©   (2004-03-01 18:11) [2]

GetLastError не вызывал, т.к. процесс создается, запускается и нормально завершается. Даже ни одной ошибки не было.


 
Игорь Шевченко ©   (2004-03-01 18:20) [3]


> Че делать люди?


Вызывать GetLastError


 
v][x ©   (2004-03-01 18:29) [4]

И что будет? Мне не номер ошибки нужен, а убрать ее.
По просбьам трудящихся, вызвал GetLastError, возвращает 126. И что это такое? Как мне права-то проставить?


 
Romkin ©   (2004-03-01 18:53) [5]

Вместо GetLastError вызови raiseLastOSError
Тогда и поймешь, в чем дело


 
v][x ©   (2004-03-01 19:11) [6]

Вызвал:
System Error. Code 126. Не найден указанный модуль.

Все равно не понимаю


 
Игорь Шевченко ©   (2004-03-01 19:20) [7]


> файл, видимо по причинам TSecurityAttributes, не создается

Вот после создания файла и проверяй, почему он не создался.
Слишком мало информации (и кода), чтобы выдать диагноз.


 
v][x ©   (2004-03-01 19:23) [8]

Var hjob:THandle;
   jobli:JOBOBJECT_BASIC_LIMIT_INFORMATION;
   si:TStartupInfo;
   sa:TSecurityAttributes;
   pi:TProcessInformation;
   h:Array[0..1] of THandle;
   dw:DWORD;
   ReturnCode:Cardinal;
begin
   FillChar(si,SizeOf(si),0);
   FillChar(sa,SizeOf(sa),0);

   //????????? ????????? TSecurityAttributes
   sa.nLength:=SizeOf(sa);
   sa.lpSecurityDescriptor:=nil;
   sa.bInheritHandle:=true;

   //????????? ???????? TStartupInfo
   si.cb:=SizeOf(si);
   si.dwFlags:=STARTF_USESHOWWINDOW{ or STARTF_USESTDHANDLES};
   si.wShowWindow:=Show;

   FillChar(jobli,SizeOf(jobli),0);
   //??????????? ????????????? ???????
   jobli.PerJobUserTimeLimit.QuadPart:=CPUTime*10000;
   jobli.LimitFlags:=JOB_OBJECT_LIMIT_JOB_TIME and
                     JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION;
   //???????? ???????
   hjob:=CreateJobObject(@sa,nil);
   SetInformationJobObject(hjob,JobObjectBasicLimitInformation,@jobli,SizeOf(jobli));
   //???????? ????????, ? ????????????? ?????????
   if not CreateProcess(nil,PChar("cmd /c "+Path+" "+Attr),@sa,@sa,true,CREATE_SUSPENDED,nil,nil,si,pi) then
     Result:=GetLastError
   else
   begin
     AssignProcessToJobObject(hjob,pi.hProcess);
     //?????? ????????
     ResumeThread(pi.hThread);
     CloseHandle(pi.hThread);
     h[0]:=pi.hProcess;
     h[1]:=hjob;
     //???????? ????????? ????????, ??? ?????????? ??? SystemTime
     dw:=WaitForMultipleObjects(2,@h,FALSE,SystemTime);
     case dw-WAIT_OBJECT_0 of
       0:
         begin
           //??????? ???????? ??????
           if not GetExitCodeProcess(pi.hProcess,ReturnCode) then
             ReturnCode:=GetLastError;
           Result:=ReturnCode;
         end;
       1:
         begin
           //??????????? CPUTime
           Result:=10001;
         end;
       WAIT_TIMEOUT:
         begin
           TerminateJobObject(hjob,10002);
           Result:=10002;
         end;
    end;

    CloseHandle(pi.hProcess);
   end;{CreateProcess}
  CloseHandle(hjob);
end;


 
v][x ©   (2004-03-01 19:48) [9]

Тьфу ты блин!!!
Приговорить меня к пожизненному растрелу!

Я каталог текущий забыл поменять, процесс в другой каталог файл записывал.

Я уже 4 часа пытаюсь этот код отладить.

Не смею больше задерживать.



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
3-1081395619
ksa2002
2004-04-08 07:40
2004.05.02
Уникальня выборка с помощью SQL


14-1081661067
RealRascal
2004-04-11 09:24
2004.05.02
LIST of TMyType


3-1081261443
Виталий Панасенко
2004-04-06 18:24
2004.05.02
Два вопроса: MS SQL и PReport


14-1081604238
acrona
2004-04-10 17:37
2004.05.02
Работа с другой программой


1-1082030354
Паша5
2004-04-15 15:59
2004.05.02
Компонент на формах