首页 | 互联网 | IT动态 | Cisco | Windows | Linux | Java | .Net | Oracle | 华为 | 存储世界 | 服务器 | 网络设备 | IDC | 安全 | 求职招聘
IT培训 | 数字网校 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 解决方案 | 直播室 | 虚拟考场 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室Linux频道
中国IT教育
首页 入门 Linux编程 系统管理 网络管理 Linux认证 Unix/BSD Linux数据库 Linux集群 Linux手册 Linux下载 Ubuntu 论坛 专题 RSS
您现在的位置: 中国IT实验室 >> Linux >> Linux编程 >> CC编程 >> 文章正文

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

文章来源中国IT实验室收集整理 作者佚名 更新时间2008-5-17 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

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

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

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

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

    CODE:

   

 /**//*
============================================================================
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);
}
return 0;
}

    运行结果是这样的:

    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

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

    花开两朵,各表一枝。

[1] [2] 下一页  

【责编:Zenghui】
中国IT教育
相关产品和培训
文章评论
 友情推荐链接
 专题推荐

 ·Linux Shell编程实用指南
 ·Linux日志分析与管理
 ·揭密Linux内存管理
 ·邮件服务Sendmail应用配置
 ·Linux 安全管理
 ·Linux 下DNS服务器架设攻略
 ·Linux 下的路由的配置与应用
 ·专题:Apache实用手册
 ·全面剖析Linux文件系统
 ·Linux常用命令全集
 今日更新
 认证培训
 频道精选
 Windows频道导航