线程间通信:
-
#include <stdio.h> // printf
-
#include <stdlib.h> // exit
-
#include <unistd.h> // pipe
-
#include <string.h> // strlen
-
#include <pthread.h> // pthread_create
-
-
using namespace std;
-
-
void *func(void * fd)
-
{
-
printf("write fd = %d\n", *(int*)fd);
-
char str[] = "hello everyone!";
-
write( *(int*)fd, str, strlen(str) );
-
}
-
-
int main()
-
{
-
int fd[2];
-
char readbuf[1024];
-
-
if(pipe(fd) < 0)
-
{
-
printf("pipe error!\n");
-
}
-
-
// create a new thread
-
pthread_t tid = 0;
-
pthread_create(&tid, NULL, func, &fd[1]);
-
pthread_join(tid, NULL);
-
-
sleep(3);
-
-
// read buf from child thread
-
read( fd[0], readbuf, sizeof(readbuf) );
-
printf("read buf = %s\n", readbuf);
-
-
return 0;
-
}
输出结果:
-
write fd = 4
-
read buf = hello
进程间通信:
-
#include <stdio.h> // printf
-
#include <stdlib.h> // exit
-
#include <unistd.h> // pipe
-
#include <string.h> // strlen
-
#include <pthread.h> // pthread_create
-
-
using namespace std;
-
-
int main()
-
{
-
int fd[2];
-
int pid = 0;
-
char str[] = "hello";
-
char readbuf[1024];
-
-
if(pipe(fd) < 0)
-
{
-
printf("pipe error!\n");
-
}
-
-
if((pid = fork()) < 0)
-
{
-
printf("fork error!\n");
-
}
-
else if(pid == 0)
-
{
-
printf("child process!\n");
-
-
// close read channel
-
close(fd[0]);
-
write(fd[1], str, strlen(str));
-
}
-
else
-
{
-
printf("father process!\n");
-
-
// close write channel
-
close(fd[1]);
-
read(fd[0], readbuf, sizeof(readbuf));
-
printf("readbuf = %s\n", readbuf);
-
}
-
-
return 0;
-
}
输出结果:
-
father
-
child
-
readbuf = hello
转载自:http://blog.csdn.net/robertkun/article/details/8095331
阅读(4207) | 评论(0) | 转发(0) |