/*-------------------------------------------------------------------------- * sehlltest - use shell command to test pipe machanism *-------------------------------------------------------------------------- */ void shelltest(void) { shell_pipid_test = pipcreate(); shell_piptr_test = &piptab[shell_pipid_test]; shellproducerid = create(shellproduce, 1024, 20, "shellproducer", 0); shellconsumerid = create(shellconsume, 1024, 20, "shellconsumer", 0); shellclockid = create(shellclock, 1024, 20, "shellclock", 0); pipconnect(shell_pipid_test, shellproducerid, shellconsumerid); resume(shellproducerid); resume(shellconsumerid); resume(shellclockid); pipdisconnect(shell_pipid_test); pipdelete(shell_pipid_test); }
int main(int argc, char **argv) { pipid32 pip; pid32 reader; pid32 writer; if(SYSERR == (pip = pipcreate())) { return 0; } if(SYSERR == (reader = create(consume, 8196, 20, "read", 1, pip))) { return 0; } if(SYSERR == (writer = create(produce, 8196, 20, "write", 1, pip))) { return 0; } if((pipconnect(pip, writer, reader) == SYSERR)) { return 0; } resume(writer); resume(reader); while(1){ char command = getchar(); if(command == 10){ resume(reader); } if(command == 'q'){ break; } } kill(reader); kill(writer); pipdisconnect(pip); pipdelete(pip); return OK; }