博客首页
注册
建议与交流
排行榜
加入友情链接
推荐
投诉
搜索:
帮助
天地任我行
jidongah.cublog.cn
管理博客
发表文章
留言
收藏夹
博客圈
音乐
相册
文章
· 软件开发
· Linux
}
· 网络协议栈
· 内核研究
· 程序设计
· 学习心得
· Windows程序
首页
关于作者
姓名:天地任我行 职业:IT
||
<<
>>
||
我的分类
文章列表 - Linux
管道(无名管道)通信的一个问题
<DIV><FONT color=#000000 size=4><STRONG>管道通信</STRONG></FONT></DIV> <DIV> 在学习进程间通信的管道通信的时候,遇到一个问题,特地拿出来让各位帮忙看看。下面程序完成了命令行下的“who|wc -l”功能,创建了两个子进程:一个实现“who”,向管道中写数据,一个实现“wc -l”,从管道中读数据。代码如下:</DIV> <DIV>#include <unistd.h><BR>#include <stdio.h><BR>#include <stdlib.h></DIV> <DIV>int main()<BR>{<BR> int pfd[2];<BR> pid_t pid1,pid2;<BR> </DIV> <DIV> pipe(pfd); <FONT color=#ff0000>//创建管道</FONT><BR> switch(pid1=fork()) {<BR> case -1:<BR> printf("-1");exit(1);<BR> case 0: <FONT color=#ff0000>// 完成往管道中写数据的子进程</FONT><BR> dup2(pfd[1],STDOUT_FILENO);<BR> close(pfd[0]);<BR> close(pfd[1]); <FONT color=#0000ff>//(1):把这一行注释掉</FONT><BR> execlp("who","who",(char*)NULL);<BR> ex……
查看全文
发表于:2008-04-21 ┆
阅读(114)
┆
评论(0)
非阻塞的SOCKET通讯
<DIV> <DIV class=articleContent id=articleBody>我自己写了一个Linux下的利用select的非阻塞的socket通讯的服务器和客户端的程序,供参考。(注:Linux和windows的select有些不同,体现两个方面:一是select函数的第一个参数,在windows下可以忽略,但在linux下必须设为最大文件描述符加1;二是结构fd_set在两个系统里定义不一样。)<BR><BR><FONT color=#0000ff><FONT color=#000000>server.c程序:<BR>-----------------------------------<BR></FONT><BR>#include <stdio.h><BR>#include <stdlib.h><BR>#include <errno.h><BR>#include <string.h><BR>#include <unistd.h><BR>#include <arpa/inet.h><BR>#include <netinet/in.h><BR><BR>#include <sys/types.h><BR>#include <sys/socket.h><BR>#include <sys/wait.h><BR>#include <sys/time.h><BR>#include <sys/types.h><BR><BR>#define MAXBUF 1024<BR><BR>typedef struct CLIENT {<BR> int fd;<BR> struct sockaddr_in addr; <BR>}CLIENT;<BR>……
查看全文
发表于:2008-04-16 ┆
阅读(161)
┆
评论(1)