00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 # include "ocsProcessControl.hh"
00016
00017 extern ofstream LogFile;
00018
00019
00020
00021 void ProcessControl::InitProcessControl( int ProcessControlModeTmp
00022 ,string ProcessControlFileName
00023 ,char *ProcessName)
00024 {
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 ProcessControlMode = ProcessControlModeTmp;
00037
00038 PathListProc = getenv("HOME");
00039 PathListProc += "/";
00040 PathListProc += ProcessControlFileName;
00041 ListProcMessage = getenv("HOSTNAME");
00042 ListProcMessage += "\t ";
00043 char cBuffer[30];
00044 sprintf(cBuffer,"%d",getpid());
00045 ListProcMessage += cBuffer;
00046 ListProcMessage += "\t ";
00047 ListProcMessage += ProcessName;
00048 ListProcMessage += "\t ";
00049 ListProcMessage += getenv("PWD");
00050 InitTime = time(NULL);
00051 char *cTime = ctime(&InitTime);
00052 cout << ListProcMessage << "\t" << cTime;
00053
00054 if (ProcessControlMode > 0) {
00055
00056 OpenListProc( PathListProc);
00057 ListProc << ListProcMessage << "\t" << cTime;
00058
00059
00060
00061 ListProc.close();
00062 }
00063 }
00064
00065
00066 void ProcessControl::OpenListProc(string ListProcFileName)
00067 {
00068 ListProc.open(ListProcFileName.c_str(),ios::app);
00069 if (! ListProc) {
00070 cerr << "Error: "<< ListProcFileName
00071 <<" could not be open."
00072 << endl << flush;
00073 exit(1);
00074 }
00075 }
00076
00077
00078
00079 ProcessControl::~ProcessControl()
00080 {
00081 FinalTime = time(NULL);
00082 char *cTime = ctime(&FinalTime);
00083 cout << "END\t"
00084 << ListProcMessage
00085 << "\t" << "Duration: " << FinalTime-InitTime << " sec"
00086 <<"\t" << cTime;
00087 if ( ProcessControlMode == 1
00088 || ProcessControlMode == 2 ) {
00089 OpenListProc(PathListProc);
00090 ListProc << "END\t"
00091 << ListProcMessage
00092 << "\t" << "Duration: " << FinalTime-InitTime << " sec"
00093 <<"\t" << cTime;
00094
00095
00096 ListProc.close();
00097 }
00098 if (ProcessControlMode == 2) {
00099
00100
00101
00102
00103 string ListProcTmp = "ProcessControlTmp.txt";
00104 string DeleteTempFile = "rm ";
00105 DeleteTempFile += ListProcTmp;
00106 system(DeleteTempFile.c_str());
00107
00108 OpenListProc(ListProcTmp);
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118 ListProc << "END\t"
00119 << ListProcMessage
00120 << "\t" << "Duration: " << FinalTime-InitTime << " sec"
00121 <<"\t" << cTime;
00122 ListProc.close();
00123
00124 char cBuffer[20];
00125 sprintf(cBuffer,"%d", getpid());
00126 ListProcMessage = "mail -s Process_Finished:_";
00127 ListProcMessage += cBuffer;
00128 ListProcMessage += " ";
00129 ListProcMessage += getenv("USER");
00130 ListProcMessage += " < "+ListProcTmp;
00131 system(ListProcMessage.c_str());
00132
00133 }
00134 }
00135
00136