主要是部分程序使用了大量的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; }