Linux c PHP通讯,Linux C编程 - 管道pipe

news/2024/7/24 1:52:05 标签: Linux c PHP通讯

在linux中,管道也是一种文件,只不过比较特殊,我们可以用pipe函数创建一个管道,其原型声明如下:

#inlcude

int pipe(int fields[2]);

其实它相当于一个通信缓冲区,fields[0]用来读,fields[1]用来写。下面的例子中,创建一个管道作为通信缓冲区,父进程创建了一个子进程,子进程通过管道的fields[1]描述符想管道中写入一个字符串,而父进程则利用管道的fields[0] 从管道中读取这个字串并显示出来:

#include

#include

#include

#include

#include

#include

#include

#define BUF_SIZ 255 // message buffer size

int main(int argc, char **argv)

{

char buffer[BUF_SIZ + 1];

int fd[2];

// receive a string as parameter

if ( argc != 2)

{

fprintf(stderr, "Usage: %s string\n\a", argv[0]);

exit(1);

}

// create pipe for communication

if ( pipe(fd) != 0 )

{

fprintf(stderr, "Create pipe error: %s\n\a", strerror(errno));

exit(1);

}

if ( fork() == 0 ) // in child process write msg to pipe

{

close(fd[0]);

printf("Child %ld write to pipe\n\a", getpid());

snprintf(buffer, BUF_SIZ, "%s", argv[1]);

write(fd[1], buffer, strlen(buffer));

printf("Child %ld quit.\n\a", getpid());

}

else // in parent process, read msg from pipe

{

close(fd[1]);

printf("Parent %ld read from pipe\n\a", getpid());

memset(buffer, '\0', BUF_SIZ + 1);

read(fd[0], buffer, BUF_SIZ);

printf("Parent %ld read : \n%s\n", getpid(), buffer);

exit(1);

}

return 0;

}

本文原创发布php中文网,转载请注明出处,感谢您的尊重!


http://www.niftyadmin.cn/n/1554125.html

相关文章

Java项目:汽车配件销售管理系统(java+SpringBoot+layui+html+maven+mysql)

源码获取:博客首页 "资源" 里下载! 项目介绍 本项目为后台管理系统, 主要功能包括: 公告增删改查,用户管理,登录页面,订单查询,配件添加等等 环境需要 1.运行环境&…

php字符串搜索和正则匹配,php针对字符串的正则匹配

本篇文章主要介绍php针对字符串的正则匹配,感兴趣的朋友参考下,希望对大家有所帮助。具体实现方法如下:/*** is_external_link 检测字符串是否包含外链* param string $text 文字* param string $host 域名* return boolean false 有外链 tru…

Java项目:简单博客管理系统(java+SpringBoot+jsp+html+maven+mysql)

源码获取:博客首页 "资源" 里下载! 项目介绍 本项目为前后台管理系统,包括博主与游客两种角色; 博主角色包含以下功能: 博主登录,发博客,博主可以删除博客等功能。 游客角色包含以下功能: 首页,…

Java项目:体育用品商城(java+SpringBoot+jsp+html+maven+mysql)

源码获取:博客首页 "资源" 里下载! 项目介绍 本项目为前后台管理系统,包括管理员与普通用户两种角色; 管理员角色包含以下功能: 管理员登录,用户管理,商品类型管理,商品管理,订单信息管理,用户留言管理,资讯…

在线库和离线库oracle,在线移动数据库文件

在线移动数据库文件在12C以前的版中,如果需要移动数据文件到新的位置,基本的过程如下:1,表空间离线;2,copy或是mv文件到新的位置;3,修改位置alter tablespace t1 rename datafile datafile1 to datafile2;或是alter database rename file datafile1 to d…

oracle 11.2 安装asm,oracle 11.2+asm重建经验(单机)

今天打算把这些天的经验所得写下来,一来自己可以再次回忆一遍,记得更牢,二来别人可能也会碰到跟我一样的问题:前段时间,数据中心的一台数据库服务器出现故障无法登陆,让机房人员重启了下服务器,…

Java项目:共享自习室预约管理系统(java+SpringBoot+Thymeleaf+html+maven+mysql)

源码获取:博客首页 "资源" 里下载! 项目介绍 项目主要功能包括: 数据分析:柱状图分析、折线图分析、统计数据等,每10秒自动刷新 用户管理:用户信息管理、用户投诉管理、投诉反馈信息、黑名单管理…

Java项目:家政服务系统(java+SpringBoot+Bootstrap+ECharts+maven+mysql)

源码获取:博客首页 "资源" 里下载! 项目介绍 本项目为后管系统,主要功能包括: 1. 用户的注册、登录、退出系统 2. 用户的搜索功能 3. 家政人员上传资料、身份认证和资格认证 4. 消费者发布预约、查看预约、确认预约、评…