当前位置: 首页 > news >正文

怎么制作网站游戏网站页面的滑动怎么做的

怎么制作网站游戏,网站页面的滑动怎么做的,机关网站建设管理工作总结,wordpress 挂黑链目录 管道 实现原理 特质 局限性 读写行为 读管道 写管道 缓冲区大小 返回值 优缺点 优点 缺点 pipe 参数pipefd[2] 返回值 测试代码1 测试结果 测试代码2 测试结果 测试代码3 测试结果 fifo 创建方式 参数pathname 参数mode 返回值 测试代码4 测试…目录 管道 实现原理 特质 局限性 读写行为 读管道 写管道 缓冲区大小 返回值 优缺点 优点 缺点 pipe 参数pipefd[2] 返回值 测试代码1 测试结果 测试代码2 测试结果 测试代码3 测试结果 fifo 创建方式 参数pathname 参数mode 返回值 测试代码4 测试结果 测试代码5 测试结果 进程间文件通信 测试代码6 测试结果 管道 实现原理 内核戒指环形队列机制使用内核缓冲区实现较为简单。 特质 伪文件。 管道中的数据只能一次读取。 数据在管道中只能单向流动。 局限性 只能自己写不能自己读。 数据不可以反复读。 半双工通信。 血缘关系进程间可用。 读写行为 读管道 管道有数据read返回实际读到的字节数。 管道无数据 写端全部关闭read函数返回0。 写端不关闭read函数阻塞等待。 写管道 读端全部关闭异常终止SIGPIPE信号导致。 读端不关闭 管道数据已满阻塞等待。 管道数据未满返回写出的字节个数。 缓冲区大小 ulimit -a man 3 fpathconf 返回值 成功管道的大小。 失败-1。 优缺点 优点 管道相比信号套接字实现进程间通信简单很多。 缺点 只能单向通信双向通信需建立两个管道。 只能用于父子、兄弟进程(有共同祖先)间通信。该问题后来使用fifo有名管道解决。 pipe 创建并打开管道。 man 2 pipe 参数pipefd[2] pipefd[0]读端。 pipefd[1]写端。 返回值 成功0 失败-1 测试代码1 父进程用管道写内容子进程用管道读内容将读取到内容输出到终端上。 #include stdlib.h #include stdio.h #include unistd.h #include fcntl.h #include string.hint main(int argc, char *argv[]) {int GuanDao_flag; //管道标志位int pipefd[2];char data[1024]; //接收的数据int leng; //接收数据的长度pid_t JinCheng_ID; //进程IDprintf(程序开始运行\n);printf(当前进程的ID是%d。\n, getpid());printf(开始创建管道\n);GuanDao_flag pipe(pipefd); //创建管道if (GuanDao_flag -1){perror(创建管道错误);}printf(开始创建进程\n);JinCheng_ID fork();if (JinCheng_ID 0) //父进程{printf(这是父进程当前进程的ID是%d子进程ID是%d。\n, getpid(), JinCheng_ID);close(pipefd[0]); //关闭读端write(pipefd[1], 你好世界\n, strlen(你好世界\n)); //通过管道向子进程发送数据sleep(1);close(pipefd[1]);printf(这是父进程父进程结束。\n);}else if (JinCheng_ID 0) //子进程{printf(这是子进程当前进程的ID是%d父进程ID是%d。\n, getpid(), getppid());close(pipefd[1]); //子进程关闭写端leng read(pipefd[0], data, sizeof(data)); //接收父进程发送的数据write(STDOUT_FILENO, data, leng); //将数据写到终端上close(pipefd[0]);printf(这是子进程子进程结束。\n);}return 0; } 测试结果 测试代码2 用管道实现ls | wc -l命令。 #include stdlib.h #include stdio.h #include unistd.h #include fcntl.h #include string.hint main(int argc, char *argv[]) {int GuanDao_flag; //管道标志位int pipefd[2];char data[1024]; //接收的数据int leng; //接收数据的长度pid_t JinCheng_ID; //进程IDprintf(程序开始运行\n);printf(当前进程的ID是%d。\n, getpid());printf(开始创建管道\n);GuanDao_flag pipe(pipefd); //创建管道if (GuanDao_flag -1){perror(创建管道错误);exit(1);}printf(创建管道完成\n);printf(开始创建进程\n);JinCheng_ID fork();if (JinCheng_ID 0) //子进程{printf(这是子进程当前进程的ID是%d父进程ID是%d。\n, getpid(), getppid());close(pipefd[1]); //子进程关闭写端dup2(pipefd[0], STDIN_FILENO); //终端输入重定向到管道的读端execlp(wc, wc, -l, NULL);perror(子进程错误);}else if (JinCheng_ID 0) //父进程{printf(这是父进程当前进程的ID是%d子进程ID是%d。\n, getpid(), JinCheng_ID);close(pipefd[0]); //关闭读端dup2(pipefd[1], STDOUT_FILENO); //终端输出重定向到管道的写端execlp(ls, ls, NULL);perror(父进程错误);}else if (JinCheng_ID -1){perror(创建进程错误);exit(1);}return 0; } 测试结果 测试代码3 使用兄弟进程间实现ls | wc -l命令。 #include stdlib.h #include stdio.h #include unistd.h #include fcntl.h #include string.h #include sys/wait.hint main(int argc, char *argv[]) {int GuanDao_flag; //管道标志位int pipefd[2];pid_t JinCheng_ID; //进程IDint i;printf(程序开始运行\n);printf(当前进程的ID是%d。\n, getpid());printf(开始创建管道\n);GuanDao_flag pipe(pipefd); //创建管道if (GuanDao_flag -1){perror(创建管道错误);exit(1);}printf(创建管道完成\n);printf(开始创建进程\n);for (i 0; i 2; i){JinCheng_ID fork();if (JinCheng_ID -1){perror(创建进程错误);exit(1);}else if (JinCheng_ID 0) //子进程{break;}}if(i0){printf(这是子1进程当前进程的ID是%d父进程ID是%d。\n, getpid(), getppid());close(pipefd[0]); //子1进程关闭读端dup2(pipefd[1], STDOUT_FILENO); //终端输出重定向到管道的写端execlp(ls, ls, NULL);perror(子1进程错误);}else if(i1){printf(这是子2进程当前进程的ID是%d父进程ID是%d。\n, getpid(), getppid());close(pipefd[1]); //子2进程关闭写端dup2(pipefd[0], STDIN_FILENO); //终端输入重定向到管道的读端execlp(wc, wc, -l, NULL);perror(子进程错误);}else if(i2){printf(这是父进程当前进程的ID是%d。\n, getpid());close(pipefd[0]); //父进程关闭读端、写端保证兄弟进程之间形成单向通信close(pipefd[1]);wait(NULL);wait(NULL);printf(父进程结束。\n);}return 0; } 测试结果 fifo FIFO常被称为命名管道以区分管道(pipe)。管道(pipe)只能用于“有血缘关系”的进程间。但通过FIFO不相关的进程也能交换数据。 FIFO文件在磁盘上没有数据块仅仅用来标识内核中一条通道。各进程可以打开这个文件进read/write实际上是在读写内核通道实现了进程间通信。 创建方式 mkfifo 管道文件名 man 3 mkfifo 参数pathname 管道文件名。 参数mode 管道文件权限。 返回值 成功0 失败-1 测试代码4 使用mkfifo创建一个管道文件。 #include stdlib.h #include stdio.h #include unistd.h #include fcntl.h #include string.h #include sys/stat.hint main(int argc, char *argv[]) {int flag;flagmkfifo(GuanDao,0664);if(flag-1){perror(创建管道文件错误);}return 0; } 测试结果 测试代码5 利用管道将两个毫无相关的进程进行连接通信。 /* CeShi5_1.c接收CeShi5_2进程的数据 */ #include stdlib.h #include stdio.h #include unistd.h #include fcntl.h #include string.hint main(int argc, char *argv[]) {int fd, leng;char data[4096];printf(程序开始运行。\n);printf(开始打开管道文件的读端。\n);fd open(argv[1], O_RDONLY);if (fd -1){perror(打开管道文件错误);exit(1);}printf(打开管道文件的读端完成。\n);printf(开始读取管道文件读端的数据。\n);while (1){leng read(fd, data, sizeof(data));if (leng 0){//printf(读取到数据为);write(STDOUT_FILENO, 读取到数据为, strlen(读取到数据为));write(STDOUT_FILENO, data, leng);}}close(fd);return 0; } /* CeShi5_2.c向CeShi5_1进程发送数据 */ #include stdlib.h #include stdio.h #include unistd.h #include fcntl.h #include string.hint main(int argc, char *argv[]) {int fd, i;char data[4096];printf(程序开始运行。\n);printf(开始打开管道文件的写端。\n);fd open(argv[1], O_WRONLY);if (fd -1){perror(打开管道文件错误);exit(1);}printf(打开管道文件的写端完成。\n);printf(开始向管道文件写端写数据。\n);i 1;while (1){sprintf(data, 你好世界这是写进程第%d次向管道写端写数据。\n, i);write(fd, data, strlen(data));printf(第%d次写成功。\n, i);i;sleep(1);}close(fd);return 0; } 测试结果 进程间文件通信 使用文件完成毫无关系进程间的通信。 测试代码6 /* CeShi6_1.c 优先执行数据的写入文件 */ #include stdlib.h #include stdio.h #include unistd.h #include fcntl.h #include string.hint main(int argc, char *argv[]) {int fd, flag;char *data 你好世界这是CeShi6_1进程写的。\n;char data1[1024];int leng;printf(程序开始运行。\n);printf(开始打开文件。\n);fd open(temp.txt, O_RDWR | O_TRUNC | O_CREAT, 0664);if (fd -1){perror(打开文件错误);exit(1);}printf(打开文件完成。\n);printf(开始文件写数据。\n);write(fd, data, strlen(data));printf(写的数据是%s, data);printf(文件写数据完成。\n);printf(开始睡大觉。\n);sleep(5);printf(睡醒了康康文件的数据。\n);lseek(fd, 0, SEEK_SET); //设置偏移量从头开始leng read(fd, data1, sizeof(data1));flagwrite(STDOUT_FILENO,data1,leng);if(flag-1){perror(输出错误);exit(1);}printf(我真是服了把我数据给改了CeShi6_2你个老6。\n);close(fd);return 0; } /* CeShi6_2.c 读取文件数据和修改文件数据 */ #include stdlib.h #include stdio.h #include unistd.h #include fcntl.h #include string.hint main(int argc, char *argv[]) {int fd, flag;char *data 你好世界这是CeShi6_2进程写的。\n;char data1[1024];int leng;printf(程序开始运行。\n);printf(开始睡大觉。\n);sleep(2);printf(睡醒了我是老6把你CeShi6_1进程写的数据给改了。\n);printf(开始打开文件。\n);fd open(temp.txt, O_RDWR);if (fd -1){perror(打开文件错误);exit(1);}printf(打开文件完成。\n);printf(让我康康你写了啥。\n);leng read(fd, data1, sizeof(data1));write(STDOUT_FILENO, data1, leng);printf(哦豁写了这玩意。\n);printf(开始文件写数据。\n);lseek(fd, 0, SEEK_SET); //设置偏移量从头开始write(fd, data, strlen(data));printf(写的数据是%s, data);printf(文件写数据完成。\n);close(fd);return 0; } 测试结果
http://www.dnsts.com.cn/news/265933.html

相关文章:

  • 重庆网站推广策划方案access是不是网页制作工具
  • 遵义做网站 0852t电子商务网站建设与管理相关文献
  • 做哪个网站的推广最好深圳建工建设集团有限公司
  • 上海建设牌电动三轮官方网站wordpress搬家config文件
  • 怎么创建一个网站新东方在线网上课程
  • 大棚网站建设wordpress注册页面修改
  • 邯郸网站建设地方广西桂林理工大学
  • 所有网站大全做seo怎么设计网站
  • 宜昌做网站优化主题 wordpress
  • 微网站什么意思怎么建设音乐试听网站
  • 公司网站做一下多少钱wordpress
  • 网站建设是前端后端吗小程序短剧
  • h5模板网站模板wordpress注册邮箱设置
  • 江西省住房与城乡建设厅网站网站建设 微信开发 h5开发
  • 黄岛做网站的公司深圳响应式网站找哪里
  • iH5做网站照片变年轻在线制作网站
  • 网站建站 优化湖北seo优化诊断
  • 网站方案设计与论证建立网站成本
  • 招聘网站的简历可以做几份ui设计技术培训学校
  • 自微网站做视频网站用什么格式好
  • 网站建设柒首先金手指8医院加强网站建设
  • 王烨凡兰州模板网站seo价格
  • 阿里云网站模板百度关键词权重查询
  • 南宁市网站建设价格百度引流怎么推广
  • 公司网站建设代理怎么做做外贸英文网站
  • wordpress建2个网站哪家公司建网站好
  • 做网站后台数据库建设免费行情软件app大全
  • 防城港建设局网站哪里有做网站培训的
  • 只有一个域名怎么做网站网站内容优化的重要性
  • 做游戏直播什么游戏视频网站好wordpress 太慢