Back to Blog

Vugen: Read A File Stream For Validation

In this example we are running tasklist.exe in windows to check the existence of a process by looking at the first 13 characters in the file.

checkprocess()
 {
 char command[1024];
 int i, total = 0;
 char buffer[12], ch;
 char *filename = lr_eval_string("C:\\tasklist_{pTime}.txt");
 long file_stream;

//Run a system command to open up a DOS prompt and tasklist
//Save it to a file

sprintf(command, "tasklist /FI \"IMAGENAME eq MobileEngine.exe\"
       /FI \"STATUS eq running\" /FO TABLE /NH > %s", filename);
system(command);

// open file and check for errors opening it.

if ((file_stream = fopen(filename, "r")) == NULL ) {
lr_error_message("Cannot open %s", filename);
 return -1;
 }

//read the file stream information - place in loop.

for(i=0; (i<NUM_CHARS) && (feof(file_stream) == 0); i++) {
     ch = fgetc(file_stream); /* Read in the next character */
     buffer[i] = ch; /* Place the new char at the end of the buffer */
 } 

/* Add null to end the buffer converting it to a string */

buffer[i] = NULL;
lr_output_message("First %d characters of file %s are \"%s\"",
     NUM_CHARS, filename, buffer);

if (fclose(file_stream)){
 lr_error_message("Error closing file %s", filename);
 };

// Now we either have something in the buffer or not.
// We are looking for the string "MobileEngine" in this case
// Either way, delete the temp file when done.

if (strcmp(buffer, "\nMobileEngine") != 0) {
 lr_error_message("The process is not running. Aborting Script...");
 sprintf(command, "DEL %s", filename );
 // lr_error_message("%s", command);
 system(command);
 return -1;
 }
 else{
 lr_output_message("The process is running. Continue...");
 sprintf(command, "DEL %s", filename );
 // lr_error_message("%s", command);
 system(command);
 };

return 0;

}

Can you think of an instance when you might need this code? I’d like to hear about examples from your everyday situations.

Back to Blog