Back to Blog
Back to Blog
Vugen: Read A File Stream For Validation
Posted on Jul, 2012 by Admin
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.