C Program to Save output of system command to variable with popen How to write a C Program to Save output of system command to variable with popen ? Solution:
C Program to Realization On The Unix Tail Command How to write a C Program to Realization On The Unix Tail Command in C Programming Language ? Solution For C Program :
Return the number of tokens given a command C Program Return the number of tokens given a command /* in setup_stack()... */ int i = 0; int argc = get_argc(file_name); char *token, *save_ptr; char **argv = malloc((argc + 1) * sizeof(char *)); size_t token_size; //generate argv and push args onto stack for (token = strtok_r((char *)file_name, " ", &save_ptr); token != NULL; token = strtok_r(NULL, " ", &save_ptr)) { token_size = strlen(token) + 1; *esp = *esp - token_size; argv[i] = *esp; i++; memcpy(*esp, token, token_size); } argv[argc] = 0; //perform alignment size_t alignment = (size_t) *esp % 4; if (alignment) { *esp = *esp - alignment; memcpy(*esp, &argv[argc], alignment); } //push argv pointers for (i = argc; i >= 0; i--) { *esp = *esp - sizeof(char *); memcpy(*esp, &argv[i], sizeof(char *)); } //push pointer to argv char *ptr = *esp; *esp = *esp - sizeof(char **); memcpy(*esp, &ptr, sizeof(char **)); //push argc *esp = *esp - sizeof(int); memcpy(*esp, &argc, sizeof(int)); //push dummy return address *esp = *esp - sizeof(void *); memcpy(*esp, &argv[argc], sizeof(void *)); free(argv); return success; } /* Return the number of tokens given a command 'file_name.' */ int get_argc(const char* file_name) { int argc = 0; char *buffer, *token, *save_ptr; buffer = malloc(sizeof(file_name)); strlcpy(buffer, file_name, sizeof(file_name)); for (token = strtok_r((char *)buffer, " ", &save_ptr); token != NULL; token = strtok_r(NULL, " ", &save_ptr)) { argc++; } free(buffer); return argc; }