c语言进程直接的管道

无名管道

c 复制代码
#include<myhead.h>	
int main(int argc, const char *argv[])
{
	int pipfd[2];
	char buff[1024]="hello world";
	char s[1024];
	//创建无名管道
	
	if(pipe(pipfd)==-1){
		perror("pipe");
		return -1;
	}
	int pid=fork();
	if(pid==-1){
		perror("fork");
		return -1;
	}
	if(pid == 0){
		//子读
		close(pipfd[1]);
		sleep(1);
		while(1){
			int res=read(pipfd[0],s,sizeof(s));
			if(strcmp("#",s)==0){
				puts("程序结束");
				return -1;
			}
			printf("父亲数据为:%s\n",s);
		}
		close(pipfd[0]);
	}else if(pid>0){
		//父写
		close(pipfd[0]);
	
		int i=0;
		while(1){
			usleep(100);
			printf("父亲发送数据>>");
		scanf("%s",buff);

			write(pipfd[1],buff,sizeof buff);
					if(strcmp(buff,"#")==0){
			puts("退出");
			break;
		}
		}
		close(pipfd[1]);
		wait(&pid);
	}
	
	return 0;
}  

斗地主改良版

c 复制代码
//斗地主
#include<myhead.h>
//定义信号量
void handler(int sig){
	if(sig==SIGALRM){
		printf("系统自动帮你出牌\n");
		printf("请输入你要出的牌\n");
		alarm(5);
	}
}
int main(int argc, const char *argv[])
{
	//函数绑
	if(signal(SIGALRM,handler)==SIG_ERR){
		perror("signal");
		return -1;
	}
	//出牌
	char ch;
	while(1){
	
		//启动定时器
		alarm(5);
		//输入
		printf("输入你要出的牌");
		scanf("%c",&ch);
		getchar();
		printf("你出的是%c\n",ch);
	}
	
	return 0;
}
ubu
相关推荐
云计算DevOps-韩老师1 小时前
【网络云计算】2024第50周-每日【2024/12/14】小测-理论和实操-写5个Bash Shell脚本的if语句和交换机路由器的知识
linux·运维·服务器·网络·kubernetes·云计算·bash
007php0071 小时前
go语言zero框架下的日志记录的sdk实战案例
linux·开发语言·后端·python·nginx·golang·php
YRr YRr2 小时前
解决 Ubuntu 20.04 上因 postmaster.pid 文件残留导致的 PostgreSQL 启动失败问题
linux·ubuntu·postgresql
夜星辰20232 小时前
gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf
linux·运维·arm开发
waicsdn_haha2 小时前
最新 VirtualBox 虚拟机安装 Ubuntu 教程【附安装包】
linux·运维·服务器·ubuntu·微软·win10·virtualbox
vvw&3 小时前
如何在 Debian 12 上安装 Chef Infra Server 自动化运维工具
linux·运维·服务器·自动化·debian·github·集群
对许3 小时前
Linux计算时间差
linux
晓纪同学4 小时前
图漾相机-ROS1_SDK_ubuntu版本编译(新版本)
linux·数码相机·ubuntu
Allen Bright4 小时前
Linux中的mv命令深入分析
linux·运维·服务器