网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > linux > Linux编程 > C++编程 > 初识Linux/C语言编程 管道和重定向理解  

初识Linux/C语言编程 管道和重定向理解

2008-05-17  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

   初识Linux/C语言编程,管道和重定向暨fork与execlp函数的理解

网管下载dl.bitscn.com

   Linux中C语言的编程有两个Windows环境下根本无须考虑的问题,关于管道和重定向的概念。

中国网管联盟bitsCN.com

    昨晚研究了一个通宵,关于fork()和execlp()函数,基本上用fork函数实现管道,用execlp来实现重定向。不过它们两个实现功能的方法都非常奇怪。

网管论坛bbs_bitsCN_com

    fork函数是让程序创建一个跟自己一模一样的副本,就跟当下流行的很多网络游戏中副本的概念差不多,昨晚在练习的时候忽然感到,这玩意儿又有点像WEB 编程中的表单自提交。在同一个程序里面写两套方案,运行时让其中的一套(安排在fork>=1的分支结构中)调用来自自身代码文件中的另一套方案 (安排在fork==0分支结构)乍一看这跟管道根本就挨不着边,我一开始也是觉得这样,就像一个进程又去调用了一个进程一样,不过另外调用的进程又是本 身,大脑里一团浆糊一样。那么请看代码吧: 网管联盟bitsCN_com

    CODE:

网管u家u.bitsCN.com

   

 /**//*
============================================================================
Name : fork_example.c
Author : newflypig
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>

int main(void) ...{
int i=1;
printf("in the begining,the value=%d ",i);
switch(fork())...{
case -1:
fprintf(stderr,"%s ","fork error");
break;
case 0:
printf("child process start,at this time value=%d ",i);
i++;
printf("child process end,at this time value=%d ",i);
break;
default:
printf("parent process: value=%d ",i);

网管u家u.bitscn@com


}
return 0;
}
网管bitscn_com

    运行结果是这样的: 网管下载dl.bitscn.com

    in the begining,the value=1
    child process start,at this time value=1
    child process end,at this time value=2
    parent process: value=1 网管联盟bitsCN_com

    可 以看到父进程首先设置i=1然后调用子进程,子进程一开始就有了父进程的i值,然后子进程在自己的基础上将i++了,子进程结束时输出了i=2。当程序返 回父进程时,子进程的改变并没有影响父进程中i的值,i依然为1。这个fork()的功能仅仅如此,有谁会想到让这个函数在Linux最具特色的管道机制 中大显伸手呢。 中国网管论坛bbs.bitsCN.com

    花开两朵,各表一枝。 中国网管论坛bbs.bitsCN.com

网管u家u.bitsCN.com


TAGs   定向   理解   管道   编程   语言       进程   文件   <   输出      
 上一篇:几种常被人们忽略的Linux系统下编程语言   下一篇:没有了
初识Linux/C语言编程 管道和重定向理解 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: