主要是部分程序使用了大量的assert,如果用线程的话,貌似会把整个进程挂掉,因此只能父子来了。
由于通信的信息不多,所以用管道读写应该就够了。
#include <stdio.h>
int main()
{
int fd[2];
int pid;
char buf[1024];
if( -1 == pipe(fd) )
{
printf("pipe() fail.");
return -1;
}
pid = fork();
if( 0 == pid )
{
close(fd[0]);
printf("I'm child.\n");
snprintf(buf,1024,"Child say hello to parent.\n");
write(fd[1],buf,sizeof(buf));
printf("Child write finished.\n");
close(fd[1]);
}
else if( pid > 0)
{
close(fd[1]);
printf("I'm parent.\n");
read(fd[0],buf,sizeof(buf));
printf("Child says:\n%s",buf);
close(fd[0]);
}
else
{
printf("fork() fail.\n");
close(fd[0]);
close(fd[1]);
return -1;
}
return 0;
}