I use select() to know when I must read from stdin. I call this function:
void
CLI()
{
    char *line=(char*)malloc(sizeof(char)*32);
    char *cmd=(char*)malloc(sizeof(char)*16);
    char *arg1=(char*)malloc(sizeof(char)*8);
    char *arg2=(char*)malloc(sizeof(char)*8);
    while(fgets(line, sizeof(line), stdin) != NULL)
    {
        cmd=strtok(line," \n\r\t");
        arg1=strtok(NULL," \n\r\t");
        arg2=strtok(NULL," \n\r\t");
        if(cmd==NULL) break;
        printf("cmd=%s, arg1=%s, arg2=%s",cmd,arg1,arg2);
    }
    free(line);
    free(cmd);
    free(arg1);
    free(arg2);
}
Example of input: #set PAR 0
What I get:
*** Error in './myprogram': double free or corruption (fasttop): 0x0000000001cc70f0 ***
What am I doing wrong?
 
     
     
     
    