zoukankan
html css js c++ java
POSIX 父子进程协同一例
子进程生成fibnacii 父进程输出
#include <sys/types.h> #include <sys/shm.h> #include <sys/stat.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define MAX_SEQUENCE 10 typedef struct { int fib_sequence[MAX_SEQUENCE]; int sequence_size; }shared_data; int main(int arg, char* argv[]) { if (arg != 2) exit(-1); pid_t pid; int segment_id, n; shared_data* seq; if (!(segment_id = shmget(IPC_PRIVATE, sizeof(shared_data), S_IRUSR|S_IWUSR))) { printf("fail to allocate memory!\n"); fprintf(stderr,"fail to allocate memory!"); exit(-1); } if ((seq = (shared_data*)shmat(segment_id, 0, 0)) == (shared_data *)-1) { printf("fail to attach to segment\n"); fprintf(stderr,"fail to attach to segment %d\n",segment_id); exit(-1); } n = atoi(argv[1]); pid = fork(); if (pid < 0) { printf("fail to set a new process!\n"); fprintf(stderr, "Fork failed!"); exit(-1); } else if (pid == 0) { int i, fir, secd, fib; if (n <= MAX_SEQUENCE) { if (n == 1) { seq->fib_sequence[0] = 0; seq->sequence_size = 1; } else if (n == 2) { seq->fib_sequence[0] = 0; seq->fib_sequence[1] = 1; seq->sequence_size = 2; } else { fir = 0; secd = 1; seq->fib_sequence[0] = 0; seq->fib_sequence[1] = 1; seq->sequence_size = n; for (i = 3; i <= n; i++) { fib = fir + secd; fir = secd; secd = fib; seq->fib_sequence[i-1] = fib; } } } else { exit(-1); } } else { wait(NULL); if (n > MAX_SEQUENCE) { printf("overflow!\n"); exit(-1); } else { int i = 0; while (i < n) { printf("%4d", seq->fib_sequence[i++]); } printf("\n%d", seq->sequence_size); exit(0); } } }
查看全文
相关阅读:
【BZOJ4517】[SDOI2016] 排列计数(组合数)
【BZOJ4818】[SDOI2017] 序列计数(矩乘水题)
【BZOJ4872】[SHOI2017] 分手是祝愿(思维+动态规划)
【BZOJ4821】[SDOI2017] 相关分析(线段树)
【BZOJ2710】[Violet 1] 追风者(计算几何)
【BZOJ3199】[SDOI2013] escape(半平面交+BFS)
【BZOJ1007】[HNOI2008] 水平可见直线(几何)
【BZOJ3689】异或之(可持久化Trie树)
【BZOJ3261】最大异或和(可持久化Trie树水题)
NOI Online #3 提高组 小记
原文地址:https://www.cnblogs.com/seebro/p/2476558.html
最新文章
【BZOJ2882】工艺(后缀数组一眼题)
2020“联想杯”网络挑战赛小记(于是这个空坑就懒得填了)
【BZOJ2741】【FOTILE模拟赛】L(可持久化Trie树+分块)
【BZOJ2555】SubString(后缀自动机+LCT)
【BZOJ2117】[2010国家集训队] Crash的旅游计划(动态点分治)
【BZOJ3473】字符串(广义后缀自动机)
【BZOJ1396】识别子串(后缀自动机+线段树)
【BZOJ3879】SvT(后缀数组+单调栈)
【BZOJ2780】Sevenk Love Oimaster(广义后缀自动机)
【BZOJ4566】[HAOI2016] 找相同字符(重拾后缀自动机)
热门文章
【BZOJ4184】shallot(线性基+线段树分治)
【BZOJ1560】[JSOI2009] 火星藏宝图(暴力DP)
【BZOJ4538】[HNOI2016] 网络(整体二分+树状数组)
【BZOJ1803】Query on a tree III(主席树SB题)
【BZOJ1568】[JSOI2008] Blue Mary开公司(卡精度线段树)
【BZOJ1406】[AHOI2007] 密码箱(数论水题)
【BZOJ4537】[HNOI2016] 最小公倍数(分块+并查集)
【BZOJ4590】[SHOI2015] 自动刷题机(SB题都能写挂的我实在太菜)
【BZOJ3197】[SDOI2013] Assassin(树的同构+树形DP+费用流)
【BZOJ4910】[SDOI2017] 苹果树(恶心且卡常的树上背包)
Copyright © 2011-2022 走看看