关于进程间通信的Linux小程序

这篇文章主要为大家详细介绍了一个关于进程间通信的Linux小程序,主要利用共享内存实现进程间通信,使用管道实现进程间竞争关系,感兴趣的朋友可以参考一下

利用工作之余为小伙伴写了份作业,关于进程间通信的。题目如下:

“父进程从键盘上接受1000个数据,对其求和sum1,子进程对这1000个数平方和sum2,结果传给父进程,父进程将sum1+sum2后,打印结果。”

要求:用大小为10的共享区传递1000个数据;子进程用消息机制将sum2传给父进程。 

主要利用共享内存实现进程间通信,使用管道实现进程间竞争关系,FreeBSD下测试通过。代码如下:时间有限,有可能有些不足,希望高手给予指点。

 #include  #include  #include  #include  #include  const int key = 0x12345678; static int pfd1[2], pfd2[2]; #define SHM_LEN (10*1024) #define VAL_NUM 5 int init_shm() { int shmid = -1; shmid = shmget((key_t)key, SHM_LEN, 0666 | IPC_CREAT); if (shmid <0) { printf("shmget failed!\n"); exit(-1); } return shmid; } void cancel_shm(int shmid) { if (shmctl(shmid, IPC_RMID, 0) == -1) { printf("shmctl failed!\n"); exit(-1); } printf("cancel_shm successfully!\n"); } void *shm_get(int shmid) { void *mem = NULL; mem = shmat(shmid, 0, 0); if (mem == (void *)-1) { printf("shmat failed!\n"); exit(-1); } return mem; } int get_val(int *val, int num) { int i; for (i = 0; i 

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上就是关于进程间通信的Linux小程序的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 服务器