2016-07-18 2 views
0

나는 일부 데이터를 기록 할 수 있으며 파일에 ofstream를 통해 그것을 기록하는 작은 응용 프로그램을 작성 :종료 후 파일의 처리에 어려움 또는 재부팅이

ofstream filename;    
filename.open("filename.ext", ios::out | ios::app); 
filename << stuff; 

이 파일은 닫히고마다 다시 개관 30 초. 두 번째 파일 "settings.ext"는 programms 동작을 정의하는 데 사용됩니다.

0 = 가시성

1 = 콘솔

이 그렇게 같은 파일을 읽을 내가 가지고 올 수있는 최선이었다

ifstream input("settings.qib", ios::in); 
    string number; 
    for (string line; getline(input, line);) 
    { 
     if (line.find("updateInterval") != string::npos) { 
      number = ""; 
      for (int i = 0; !isspace(line.at(i)); i++) number += line.at(i); 
      updateInterval = stoi(number); 
     } 
     if (line.find("visibility") != string::npos) { 
      number = ""; 
      for (int i = 0; !isspace(line.at(i)); i++) number += line.at(i); 
      Stealth(stoi(number)); 
     } 
     if (line.find("console") != string::npos) { 
      number = ""; 
      for (int i = 0; !isspace(line.at(i)); i++) number += line.at(i); 
      console = stoi(number); 
     } 
    } 

:이 기능은 다음과 같습니다 30 = updateInterval

모든 것이 잘 작동합니다. 설정은 로그 파일이 플러시되는 것과 동일한 간격으로 새로 고쳐집니다.

모든 시작을 시작할 때마다 전체 프로그램이 레지스트리 항목을 만들었으므로 잘 작동합니다. 그러나 종료 또는 재부팅 후 프로그램이 두 파일을 무시한 것 같습니다. 새 내용이 로그 파일에 추가되지 않으며 설정이 새로 고쳐지지 않습니다.

나는 이것이 로그 파일이 시스템 종료 중에 열려 있다는 사실과 관련이 있다고 생각하지만 설정 파일이 손상되지 않았 음을 설명합니다.

나는 WM_ENDSESSION에 관한 몇 가지 사항을 읽었지만 그것이 올바른 방향인지 확신 할 수 없습니다.

나는 모든 종류의 답변이나 내 목표를 달성하기위한 다른 방법으로 공개됩니다.

+0

프로그램의 시작 부분에':: DebugBreak();'를 넣어두면 자동 시작시 디버거를 부착 할 수 있습니다. –

+0

재부팅 후에 프로그램이 전혀 실행되지 않습니까? –

+0

로깅 기능이 제대로 작동하는 경우에도 잘 실행됩니다. 그러나 프로그램에서 파일을 열 수 없습니다. – Quallon

답변

0

많은 재부팅 후에 나는 현재 작업 디렉토리가 시작한 후에/system32로 표시됩니다. 파일을 열 수있는 것은 놀라운 일이 아닙니다. 첫 번째 : system32에는 이러한 파일이 없습니다. 두 번째 : 프로그램이 해당 디렉토리에 쓸 권한이 없습니다. 이 문제를 해결하려면 _chdir()을 사용하여 디렉토리를 변경하고 everythink는 매력처럼 작동합니다.