#include<apue.h>
#include<signal.h>
static void charatatime(char *str)
{
char *ptr;
int c;
setbuf(stdout,NULL);
for (ptr = str;(c = *ptr++) != 0;)
putc(c,stdout);
}
int main(int argc , char *argv[])
{
pid_t pid;
int i;
TELL_WAIT();
if ((pid = fork()) < 0)
err_sys("fork error");
else if (pid == 0)
{
for (i = 0;i < 10;++i)
{
WAIT_PARENT();
charatatime("ouput from child\n");
}
exit(0);
}
else
{
for (i = 0;i < 10;++i)
{
charatatime("output from parent\n");
TELL_CHILD(pid);
}
}
return 0;
}
ループなしで2回印刷するだけで正しく動作しますが、ループでさらに印刷しようとするとひどいようです....for
親プロセスは終了後に子プロセスを待つべきだと思いますTELL_CHILD(pid)
....