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

企业电子商务网站优化方案中国商标网官方查询网站

企业电子商务网站优化方案,中国商标网官方查询网站,基于html5的旅游网站开发,wordpress能不能做管理系统目录 一#xff0c;进程间通信 二#xff0c;管道 匿名管道 命名管道 一#xff0c;进程间通信 进程间通信#xff08;IPC#xff0c;InterProcess Communication#xff09;#xff0c;即在不同进程之间进行信息的传播或交换#xff1b;由于一般进程用户地址空间是…目录 一进程间通信 二管道 匿名管道 命名管道 一进程间通信 进程间通信IPCInterProcess Communication即在不同进程之间进行信息的传播或交换由于一般进程用户地址空间是独立的不可直接访问其他进程地址空间因此进程间进行信息交换必须通过系统内核进行 进程间通信目的 数据传输将一个进程的数据发送给另一个进程资源共享多个进程间共享同样的资源通知事件一个进程向另一个进程或一组进程发送信息通知它们发生了某种事件如进程终止时通知父进程进程控制有些进程希望完全控制另一个进程的执行如debug此时进程希望能够拦截另一个进程的所有异常并能够及时知道其状态的改变 进程间通信的分类 管道 匿名管道pipe命名管道System V IPC system V 消息队列system V 共享内存system V 信号量POSIX IPC 信息队列共享内存信息量互斥量调节变量读写锁 二管道 匿名管道pipe、命名管道 匿名管道 Linux通过使用竖线管道符 | 来连接多个命令以形成一个管道管道符前面命令的输出作为管道符后面命令的输入管道中的数据只能单向流动即半双工通信要实现双向流动需创建两个管道另外此管道为匿名管道用完即被自动销毁且只能在父子进程间通信 [wz192 Desktop]$ cat test.c | grep main int main() 父进程需读写都打开文件这样子进程继承时才会有读写然后通过关闭父子进程对应的读写来实现信息的传输不关闭相应的读写也可通信但一般关闭防止误操作 管道函数 pipe 创建匿名管道 创建成功返回0创建失败返回-1 pipefd为文件描述符数组 pipefd[0]指定管道读端默认值为3pipefd[1]指定管道写端默认值为4 #include stdio.h #include unistd.h int main() { int pipefd[2]; if(pipe(pipefd) 0) { perror(pipe); return 1; } printf(pipefd[0]: %d\n, pipefd[0]); printf(pipefd[1]: %d\n, pipefd[1]); return 0; } [wz192 pipe]$ ./test pipefd[0]: 3 pipefd[1]: 4int main() { int pipefd[2]; if(pipe(pipefd) 0){ perror(pipe); return 1; } char buf[32]; write(pipefd[1],hellopipe,32); //向管道内写read(pipefd[0],buf,32); //从管道内读 printf(buf: %s\n, buf); return 0; } [wz192 pipe]$ ./test buf: hellopipe //子进程写入父进程读取 #include stdio.h #include unistd.h #include string.h #include stdlib.h #include sys/types.h #include sys/wait.hint main() {int pipefd[2];if(pipe(pipefd) 0){perror(pipe);return 1;}pid_t id fork();if(id 0){perror(fork);return 1;}else if(id 0){close(pipefd[0]);char* msg child msg;int count5;while(count){printf(child write: %s\n,msg);write(pipefd[1],msg,strlen(msg));sleep(1);count--;}close(pipefd[1]);exit(0);}else{char buf[64];close(pipefd[1]);while(1){ssize_t szread(pipefd[0],buf,sizeof(buf)-1);if(sz0){buf[sz]0;printf(father read: %s\n,buf);}else if(sz0){printf(pipe file empty!\n);break;}}close(pipefd[0]);printf(close read\n);int status 0; pid_t wait_pid waitpid(id,status,0); if(WIFEXITED(status) wait_pidid) printf(child exit normal, exit code: %d\n, WEXITSTATUS(status)); else printf(child exit error, exit sig: %d\n, WTERMSIG(status)); }return 0; }如管道为空则读端需等待数据就绪即read阻塞如管道在写端已写满需等待管道有空闲空间才可继续写入即write阻塞 管道自带同步机制管道是单向通信的管道是面向字节流的管道只能保证具有血缘关系的进程通信管道可保证一定程度数据读取的原子性 //子进程持续在写入父进程关闭读 //此时OS会直接关闭子进程else{char buf[64];close(pipefd[1]);while(1){ssize_t szread(pipefd[0],buf,sizeof(buf)-1);if(sz0){buf[sz]0;printf(father read: %s\n,buf);close(pipefd[0]);break;}else if(sz0){printf(pipe file empty!\n);break;}}printf(close read\n);int status 0; pid_t wait_pid waitpid(id,status,0); if(WIFEXITED(status) wait_pidid) printf(child exit normal, exit code: %d\n, WEXITSTATUS(status)); else printf(child exit error, exit sig: %d\n, WTERMSIG(status)); } //子进程退出信号为13即SIGPIPE [wz192 pipe]$ ./test child write: child msg father read: child msg close read child write: child msg child exit error, exit sig: 13[wz192 pipe]$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7154 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 4096 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited命名管道 命名管道是一种特殊类型的文件可在不相关进程间交换数据使用FIFO文件实现 使用命令mkfifo创建命名管道 [wz192 pipe]$ mkfifo pipefile [wz192 pipe]$ ll pipefile prw-rw-r--. 1 wz wz 0 8月 18 08:24 pipefile使用函数mkfifo创建命名管道 匿名管道与命名管道区别 匿名管道由函数pipe创建并打开命名管道由函数或命令mkfifo创建再由open打开唯一区别即创建和打开方式不同 [wz192 pipe]$ echo abc pipefile [wz192 pipe]$ while :; do echo 1,##########; cat pipefile; echo 2,#########; sleep 1; done 1,########## abc 2,######### 1,########## 实现serverclient通信 //makefile .PHONY:all all: server clientserver:server.cgcc -o $ $^ client:client.cgcc -o $ $^ .PHONY:clean clean:rm -rf server client //server.c //创建命名管道并读 #include stdlib.h #include string.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h int main() { int ret mkfifo(pipefile, 0644); if(ret -1){ perror(mkfifo); return 1; } int pipefd open(pipefile, O_RDONLY); if(pipefd 0){ perror(open); return 2; } char msg[64]{0}; while(1){ printf(please wait ...\n); ssize_t sz read(pipefd, msg, sizeof(msg)-1); if(sz 0){ msg[sz]0; printf(server read: %s\n, msg); } else if(sz 0){ printf(client quit!\n); break; } else{ perror(read); return 3; } } close(pipefd); return 0; } //client.c //向管道写入 #include stdlib.h #include string.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h int main() { int pipefd open(pipefile, O_WRONLY); if(pipefd 0){ perror(open); return 1; } char msg[64]{0}; while(1){ printf(please write ...\n); ssize_t sz read(0, msg, sizeof(msg)-1); if(sz 0){ msg[sz]0; write(pipefd, msg, strlen(msg)); } else if(sz 0){ printf(client read empty!\n); break; } else{ perror(client read\n); return 2; } } close(pipefd); return 0; }
http://www.dnsts.com.cn/news/9816.html

相关文章:

  • 购物网站排名2017做网站设计软件
  • 达建网站学会网站 建设
  • 湖南省城乡与住房建设厅网站wordpress 多站点插件
  • php 网站cookie襄阳信息网站建设
  • 福州网站seo公司杨浦区网站建设
  • 网站关键字排名提升工具网络广告营销案例有哪些
  • 哈尔滨网站建设与管理做网站制作公司
  • 网站需求分析有哪些内容中国国际贸易单一窗口登录
  • 南京自助建站模板wordpress内容模板下载
  • 做网站为什么需要服务器网站建设要求报告
  • 浙江省城乡和住房建设厅网站设计建设网站公司网站
  • 网站开发支持上传gif本溪网站开发
  • 手机网站域名查询网页升级访问未成年
  • 企业网站和展板建设wordpress 个人设置
  • 网站怎么做响应式温州企业网站制作
  • 建设一个网站需要哪些员工广州app客户端开发
  • asp 免费网站模板扫黄打非网站建设
  • 一个网站多个域名的seo优化移动应用开发专业
  • 搜索的网站后大拇指分享数量不见了长沙网站建设索王道下拉
  • 外国服务器的网站西宁网站建设西宁
  • 网站搭建软件d北京做视觉网站
  • 网站建设东莞长安镇微信群投票网站怎么做
  • 怎么分析竞争对手网站做家教的正规网站
  • 修改dns连接外国网站怎么制作小视频
  • 要个网站哪里有做网站的单位
  • 承接网站建设广告语广州市平安建设 网站
  • 有没有什么网站专门帮人做问卷wordpress 轻论坛
  • 网站宣传工作ui设计周末培训学校
  • 建设企业网站的好处是什么h5网站设计方案
  • 网站建设培训班南宁苏州苏州设计公司