#include #include #include #include /* pipe */ #include #include #define TRUE 0 #define FALSE -1 #define MSGSIZE 128 void main(void){ int pipe_fd[2] = {-1, -1}; int desc, len, spawn_fdmap[1], spw_fd_count; char sndbuf[MSGSIZE], rcvbuf[MSGSIZE], CmdStr[128]; char *spawn_argv[13], *spawn_envp[1]; struct inheritance inherit; pid_t pid; printf("** TESTOYAP: 子供を呼出す pipe のテスト **\n"); getchar(); /*(1) 標準出力用 pipe を作成する */ pipe(pipe_fd); /* これで一対の pipe が完成 */ /* 書き込み側の pipe の fd を教える */ spawn_argv[0] = (char*)&pipe_fd[1]; spawn_argv[1] = NULL; spawn_envp[0] = NULL; spw_fd_count = 1; spawn_fdmap[0] = pipe_fd[1]; strcpy(CmdStr, "/QSYS.LIB/TEST.COM.LIB/TESTKOP.PGM"); pid = spawn(CmdStr,spw_fd_count, spawn_fdmap, &inherit, spawn_argv, spawn_env /* 不要になったので close */ close(pipe_fd[1]); read(pipe_fd[0], rcvbuf, sizeof(rcvbuf)-1); /* TESTKOP からのデータを読取る * close(pipe_fd[0]); printf(" 親が受取ったのは TESTOYAP[%d] rcvbuf=[%s]\n", __LINE__, rcvbuf); getchar(); }