通过匿名管道实现播放网络视频
伪代码实现通过匿名管道播放网络视频、音乐等。
示例:player.c(子读父写)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
#include <fcntl.h>
int main()
{
int pfd[2];
pid_t pid;
int fd;
if(pipe(pfd) < 0) //创建匿名管道
{
perror("pipe()");
exit(1);
}
pid = fork(); //创建子进程
if(pid<0)
{
perror("fork()");
exit(1);
}
if(pid ==0) //子进程
{
fd = open("/dev/null",O_RDWR); //打开/dev目录下的空文件
close(pfd[1]); //关闭写端
dup2(pfd[0],0); //将读端映射到标准输入上
if(pfd[0] != 0) //关闭读端
close(pfd[0]);
dup2(1,fd); //将标准输出、标准出错映射到fd上
dup2(2,fd);
close(1); //关闭标准输出、标准错误
close(2);
execlp("/xxx/xxx/mpeg123","mpeg123","-",NULL); //exec族函数 mpeg123替换当前子进程
perror("execvp()"); //替换出错报错结束
exit(1);
}
else //父进程
{
close(pfd[0]); //关闭读端
//socket data //通过socket通讯接收网络数据写入管道
close(pfd[1]); //关闭写端
wait(NULL); //等待子进程退出
}
exit(0);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现