/* * * DISCLAIMER: * * This program is provided as a service to the programmer * community to demonstrate one or more features of the Amiga * personal computer. These code samples may be freely used * for commercial or noncommercial purposes. * * Commodore Electronics, Ltd ("Commodore") makes no * warranties, either expressed or implied, with respect * to the program described herein, its quality, performance, * merchantability, or fitness for any particular purpose. * This program is provided "as is" and the entire risk * as to its quality and performance is with the user. * Should the program prove defective following its * purchase, the user (and not the creator of the program, * Commodore, their distributors or their retailers) * assumes the entire cost of all necessary damages. In * no event will Commodore be liable for direct, indirect, * incidental or consequential damages resulting from any * defect in the program even if it has been advised of the * possibility of such damages. Some laws do not allow * the exclusion or limitation of implied warranties or * liabilities for incidental or consequential damages, * so the above limitation or exclusion may not apply. * */ /* sample slave code for create process test */ /* author: Rob Peck 1/4/86, using exec_support task functions. */ /* system software version: V1.1 */ #include "exec/types.h" #include "exec/nodes.h" #include "exec/lists.h" #include "exec/libraries.h" #include "exec/ports.h" #include "exec/interrupts.h" #include "exec/io.h" #include "libraries/dos.h" #include "libraries/dosextens.h" #include "workbench/startup.h" /* these are going to be supplied to the slave by the starter */ extern int stdout; extern int stderr; struct mymess { struct Message sysmess; int outpointer; int errpointer; }; extern struct Message *GetMsg(); extern struct Task *FindTask(); main() { int type; /* type of message received */ int waitforeverSignal; struct mymess *msg; struct MsgPort *myport; struct Process *myprocess; myprocess = (struct Process *)FindTask(0); myport = &myprocess->pr_MsgPort; WaitPort(myport); /* wait for starter to post a message. */ /* Special sample message has his stderr, * stdout so we can both post stuff to * the same window */ msg = (struct mymess *)GetMsg(myport); stdout = msg->outpointer; stderr = msg->errpointer; ReplyMsg(msg); /* use printf to prove that it is really a process... a task * cannot do this without crashing */ printf("\nHere I am, that slave task you started!!! bye!"); } /* now simply fall off the end of the world, should return cleanly */