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?