亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Linux服務器 > 正文

關于進程間通信的Linux小程序

2024-09-05 23:02:33
字體:
來源:轉載
供稿:網友
這篇文章主要為大家詳細介紹了一個關于進程間通信的Linux小程序,主要利用共享內存實現進程間通信,使用管道實現進程間競爭關系,感興趣的朋友可以參考一下
 

利用工作之余為小伙伴寫了份作業,關于進程間通信的。題目如下:

“父進程從鍵盤上接受1000個數據,對其求和sum1,子進程對這1000個數平方和sum2,結果傳給父進程,父進程將sum1+sum2后,打印結果。”

要求:用大小為10的共享區傳遞1000個數據;子進程用消息機制將sum2傳給父進程。 

主要利用共享內存實現進程間通信,使用管道實現進程間競爭關系,FreeBSD下測試通過。代碼如下:時間有限,有可能有些不足,希望高手給予指點。

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/shm.h>#include <signal.h>const int key = 0x12345678;static int pfd1[2], pfd2[2];#define SHM_LEN (10*1024)#define VAL_NUM 5int 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 < num; i++) {  printf("please input a num:");  scanf("%d", val + i); }}void show_val (int *val, int num) { int i; for (i = 0; i < num; i++) {  printf("%d/t", *(val + i)); } printf("/n");}int add_val (int *val, int num) { int result = 0; int i;  for (i = 0; i < num; i++) {  result += *(val + i); } return result;}int square_val (int *val, int num) { int result = 0; int i, tmp; for (i = 0; i < num; i++) {  tmp = *(val + i);  result += (tmp * tmp); } return result;}void TELL_WAIT (void) { if (pipe(pfd1) < 0 || pipe(pfd2) < 0) {  printf("pipe error!/n");  exit(-1); }}void TELL_PARENT (pid_t pid) { if (write(pfd2[1], "c", 1) != 1) {  printf("write error!/n");  exit(-1); }}void WAIT_PARENT (void) { char c; if (read(pfd1[0], &c, 1) != 1) {  printf("read error!/n");  exit(-1); }}void TELL_CHILD (pid_t pid) { if (write(pfd1[1], "p", 1) != 1) {  printf("write error!/n");  exit(-1); }}void WAIT_CHILD (void) { char c; if (read(pfd2[0], &c, 1) != 1) {  printf("read error!/n");  exit(-1); }}int main(int argc, char *argv[]) { void *mem = NULL; int shmid = -1; pid_t pid = -1; int val[VAL_NUM]; int result = 0; shmid = init_shm();  TELL_WAIT(); if ((pid = fork()) < 0) {  //error  printf("fork error!/n");   exit(-1); } else if (pid == 0) {   //child  int result = 0;  WAIT_PARENT();  mem = shm_get(shmid);  //get share memery  memcpy(val, mem, sizeof(int) * VAL_NUM);  result = square_val(val, VAL_NUM);   *(int *)((void *)mem + SHM_LEN - 4) = result;  TELL_PARENT(pid);  exit(1); } else {      //parent  int child_result = 0;  mem = shm_get(shmid);  //get share memery  get_val(val, VAL_NUM);  //get user input  memcpy(mem, val, sizeof(int) * VAL_NUM); //copy user input to share memery  TELL_CHILD(pid);  result = add_val(val, VAL_NUM);  WAIT_CHILD();  child_result = *(int *)((void *)mem + SHM_LEN - 4);  printf("result:%d, child_result:%d, all:%d/n", result, child_result, result + child_result); } cancel_shm(shmid); return 0;}

以上就是本文的全部內容,希望對大家的學習有所幫助。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费一区二区三区在线观看| 69国产精品成人在线播放| 国产区精品在线观看| 欧美精品免费在线| 午夜精品福利视频| 日本一区二区三区四区视频| 国产精品91视频| 国产成人精品久久久| 日韩欧美在线中文字幕| 国产午夜精品美女视频明星a级| 国产精品久久激情| 91美女福利视频高清| 久久精品99久久久香蕉| 国产亚洲精品激情久久| 国产亚洲一区二区精品| 另类色图亚洲色图| 91香蕉嫩草神马影院在线观看| 日韩中文字幕久久| 国内揄拍国内精品| 亚洲国产精品久久91精品| 国产精品久久久久久久久久东京| 国产一区二区三区直播精品电影| 日韩免费在线免费观看| 久久亚洲春色中文字幕| 久久伊人精品视频| 欧美激情第一页xxx| 日韩激情视频在线| 亚洲裸体xxxx| 久久久之久亚州精品露出| 久久久久久久香蕉网| 一本色道久久综合亚洲精品小说| 国产91精品在线播放| 一本色道久久88精品综合| 国产欧美 在线欧美| 国产成人精品国内自产拍免费看| 欧美壮男野外gaytube| 国产精品免费观看在线| 久久久精品一区| 精品电影在线观看| 成人精品一区二区三区电影免费| 久久久免费av| 亚洲欧美日韩爽爽影院| 欧美国产精品人人做人人爱| 成人天堂噜噜噜| 日韩av高清不卡| 欧美日韩成人黄色| 国产精品自拍小视频| 欧美在线激情视频| 视频在线观看一区二区| 中文字幕欧美日韩| 欧美在线一区二区三区四| 日韩av黄色在线观看| 97精品免费视频| 欧美大片欧美激情性色a∨久久| 成人免费激情视频| 久久中文字幕国产| 亚洲欧洲日产国产网站| 国外成人免费在线播放| 国产精品白丝av嫩草影院| 亚洲精品视频免费在线观看| 性欧美在线看片a免费观看| 欧美激情啊啊啊| 国产精品电影一区| 欧美国产一区二区三区| 国产伦精品一区二区三区精品视频| 国产丝袜一区二区三区免费视频| 国产综合色香蕉精品| 国产精品成人一区| 日韩在线观看精品| 国产欧美va欧美va香蕉在线| 欧美午夜精品在线| 国产欧美精品日韩精品| 日韩视频永久免费观看| 久久成人精品视频| 日韩精品极品视频免费观看| 日韩精品免费在线播放| 国产精品女人网站| 国产精品久久久久久av福利软件| 国产欧美精品一区二区三区-老狼| 欧美疯狂性受xxxxx另类| 欧美大片免费观看| 91老司机在线| 国产高清视频一区三区| 精品美女久久久久久免费| 久青草国产97香蕉在线视频| 欧美精品性视频| 亚洲欧美制服另类日韩| 日韩精品在线免费观看| 久久成人精品电影| 久久久欧美一区二区| 亚洲欧美中文字幕在线一区| 国模吧一区二区三区| 日本国产高清不卡| 青青精品视频播放| 久久成人免费视频| 亚洲女人天堂色在线7777| 久久亚洲精品成人| 欧美视频专区一二在线观看| 国产精品嫩草影院一区二区| 亚洲精品视频在线播放| 亚洲国产99精品国自产| 久久精品免费电影| 日本不卡视频在线播放| 国产成人精品视频在线| 亚洲第一免费网站| 中文字幕欧美日韩va免费视频| 91po在线观看91精品国产性色| 日韩中文字幕网| 日韩欧美亚洲综合| 一区二区三区视频免费在线观看| 亚洲人成在线免费观看| 精品亚洲va在线va天堂资源站| 久久福利视频导航| 91国产中文字幕| 国产精品v日韩精品| 欧美一区二区三区免费观看| 一区二区成人av| 亚洲精品自拍第一页| 欧美刺激性大交免费视频| 国产精品极品美女在线观看免费| 久久激情五月丁香伊人| 亚洲香蕉在线观看| 国产suv精品一区二区| 97人洗澡人人免费公开视频碰碰碰| 久久天天躁狠狠躁夜夜躁| 欧美专区在线视频| 中文一区二区视频| 欧美丰满片xxx777| 国产精品九九久久久久久久| 91国偷自产一区二区三区的观看方式| 欧美日韩在线观看视频小说| 奇门遁甲1982国语版免费观看高清| 激情成人中文字幕| 亚洲xxxx视频| 欧美大荫蒂xxx| 在线观看国产精品淫| 国产精品成人一区二区三区吃奶| 欧美劲爆第一页| 国产在线拍揄自揄视频不卡99| 欧美整片在线观看| 亚洲欧美中文另类| 日韩电影视频免费| 欧美日韩免费在线| 欧美在线播放视频| 在线观看日韩www视频免费| 欧美高清激情视频| 国产成人aa精品一区在线播放| 日韩国产一区三区| 91沈先生在线观看| 国产综合久久久久久| 一区二区三区回区在观看免费视频| 97**国产露脸精品国产| 亚洲图片欧洲图片av| 深夜成人在线观看| 尤物tv国产一区| 国产精品亚洲视频在线观看| 成人精品久久久| 色综合影院在线| 久久香蕉国产线看观看网| 在线亚洲欧美视频| 亚洲国产欧美日韩精品| 国产精品一香蕉国产线看观看| 中文字幕免费精品一区| 国产啪精品视频|