资源简介
/**************************************************************************/
//本程序是利用LINUX FIFO命名管道技术实现双向聊天的C语言源代码。
//优点:代码简洁明了。
//其中:
//chat.c: 聊天源代码。
//makefile: 利用宏定义,把一个源码生成两个不同的可执行程序。
//
//使用:
//make clean 清除上次编译生成的结果文件。
//make 重新编译生成两个可执行程序。./a_chat和./b_chat的执行顺序没有先后。
//作者:david.q@sz 2012-8-11 2263537@qq.com
/**************************************************************************/
代码片段和文件信息
/**************************************************************************/
//本程序是利用LINUX FIFO命名管道技术实现双向聊天的C语言源代码。
//优点:代码简洁明了。
//其中:
//chat.c: 聊天源代码。
//makefile: 利用宏定义,把一个源码生成两个不同的可执行程序。
//
//使用:
//make clean 清除上次编译生成的结果文件。
//make 重新编译生成两个可执行程序。./a_chat和./b_chat的执行顺序没有先后。
//作者:david.q@sz 2012-8-11 2263537@qq.com
/**************************************************************************/
#include
#include
#include
#include
#include
#include
#include
int main( int argc char *argv[] )
{
#ifdef A
char me[] = “a“;
char you[] = “b“;
#else
char me[] = “b“;
char you[] = “a“;
#endif
char buf[100];
char get[100];
printf( “Hello %s!\n“ me ); //print welcome message
pid_t pid;
pid = fork();
if ( pid == 0 ) //child process
{
int fifo_f;
#ifdef A
char fifo[] = “/tmp/b2a“;
#else
char fifo[] = “/tmp/a2b“;
#endif
mkfifo( fifo 0666 ); //creat fifo if exist or not
if ( errno == EEXIST )
{
fifo_f = open( fifo O_RDONLY ); //wait & open fifo
}
//read
while ( 1 )
{
bzero( get sizeof(get)); //set buf to ‘\0‘ before read buf
read( fifo_f get sizeof(get) ); //read buf from another side
if ( strlen(get) )
{
printf( “\r%s: %s“ you get );
printf( “%s: “ me );
fflush(stdout); //print buf to screen
usleep(100);
}
}
}
else //parent process
{
int fifo_f;
#ifdef A
char fifo[] = “/tmp/a2b“;
#else
char fifo[] = “/tmp/b2a“;
#endif
mkfifo( fifo 0666 ); //creat fifo if exist or not
if ( errno == EEXIST )
{
fifo_f = open( fifo O_WRONLY ); //wait & open fifo
}
//write
while ( 1 )
{
printf( “%s: “ me );
fflush(stdout); //print to screen
bzero( buf sizeof(buf) ); //set buf to ‘\0‘ before get from stdin
fgets( buf sizeof(buf) stdin ); //get buf from stdin
write( fifo_f buf sizeof(buf) ); //send buf to anoterh side
usleep(100);
}
}
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2187 2012-08-12 16:57 chat.c
文件 179 2012-08-12 12:00 Makefile
----------- --------- ---------- ----- ----
2366 2
- 上一篇:读取sgy卷头,道头及数据
- 下一篇:3DES,C语言版,ECB,PKCS7
相关资源
- c++教程网的linux网络编程视频
- 操作系统3种页面置换算法 C++实现
- C++实现的共享内存缓冲区
- linux c语言写的坦克大战小游戏
- Linux下用c++调用自己的matlab函数的一个
- C语言+SDLlinux贪吃蛇游戏)
- linux C/C++实现的通过url访问网页提取网
- 在Linux下编译并运行C程序
- 纯C++方式生成复杂格式的excel文件(
- 64bit linux libstdc++.so.6.0.10
- Linux下C语言应用编程--随书源代码
- Linux串口操作RS232-C++
- Linux下发包程序
- c++读写BMP JPG 和png 的图像文件linux
- Linux下C语言实现的FTP系统
- linux下FTP服务器与客户端的C语言实现
- Linux操作系统C语言编程入门pd
- linux下c语言实现多线程web服务器
- linux 上用C++实现的网络嗅探器
- Linux下C语言2048游戏代码
- 吕鑫-VS2015之C.C++.MFC等完整视频链接
- tcp udp 底层c++封装类windows和linux
- 简单的Linux下Ftp客户端C语言编写
- 《嵌入式Linux C语言应用程序设计》读
- MFC实现的操作系统页面置换FIFO、LRU、
- 基于多线程的Linux聊天室系统
- myshell:操作系统编程-自己用C语言写
- linux下C语言编写的学生信息管理系统
- C++ 先进先出算法FIFO
- linux C语言 QQ模拟聊天.zip
评论
共有 条评论