首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>其他编程>正文

Linux程序设计入门 系统进程的详细介绍

http://www.oklinux.cn  2007-08-16  来源: 赛迪网 kid  会员收藏  游客收藏  【 】 

 

wait系统调用会使父进程阻塞直到一个子进程结束或者是父进程接受到了一个信号.如果没有父进程没有子进程或者他的子进程已经结束了wait回立即返回.成功时(因一个子进程结束)wait将返回子进程的ID,否则返回-1,并设置全局变量errno.stat_loc是子进程的退出状态.子进程调用exit,_exit 或者是return来设置这个值. 为了得到这个值Linux定义了几个宏来测试这个返回值。

 

WIFEXITED:判断子进程退出值是非0

WEXITSTATUS:判断子进程的退出值(当子进程退出时非0).

WIFSIGNALED:子进程由于有没有获得的信号而退出.

WTERMSIG:子进程没有获得的信号号(在WIFSIGNALED为真时才有意义).

waitpid等待指定的子进程直到子进程返回.如果pid为正值则等待指定的进程(pid).如果为0则等待任何一个组ID和调用者的组ID相同的进程.为-1时等同于wait调用.小于-1时等待任何一个组ID等于pid绝对值的进程. stat_loc和wait的意义一样. options可以决定父进程的状态.可以取两个值 WNOHANG:父进程立即返回当没有子进程存在时. WUNTACHED:当子进程结束时waitpid返回,但是子进程的退出状态不可得到.父进程创建子进程后,子进程一般要执行不同的程序.为了调用系统程序,我们可以使用系

统调用exec族调用.exec族调用有着5个函数.

 

 

#include <unistd.h> 
int execl(const char *path,const char *arg,...); 
int execlp(const char *file,const char *arg,...); 
int execle(const char *path,const char *arg,...); 
int execv(const char *path,char *const argv[]); 
int execvp(const char *file,char *const argv[]):

 

exec族调用可以执行给定程序.关于exec族调用的详细解说可以参考系统手册(man exec

下面我们来学习一个实例.注意编译的时候要加 -lm以便连接数学函数库.

 

 

#include <unistd.h> 
#include <sys/types.h> 
#include <sys/wait.h> 
#include <stdio.h> 
#include <errno.h> 
#include <math.h> 
void main(void) 
{ 
pid_t child; 
int status; 
printf("This will demostrate how to get child status "); 
if((child=fork())==-1) 
{ 
printf("Fork Error :%s ",strerror(errno)); 
exit(1); 
} 
else if(child==0) 
{ 
int i; 
printf("I am the child:%ld ",getpid()); 
for(i=0;i<1000000;i++) sin(i); 
i=5; 
printf("I exit with %d ",i); 
exit(i); 
} 
while(((child=wait(&status))==-1)&(errno==EINTR)); 
if(child==-1) 
printf("Wait Error:%s ",strerror(errno)); 
else if(!status) 
printf("Child %ld terminated normally return status is zero ", 
child); 
else if(WIFEXITED(status)) 
printf("Child %ld terminated normally return status is %d ", 
child,WEXITSTATUS(status)); 
else if(WIFSIGNALED(status)) 
printf("Child %ld terminated due to signal %d znot caught ", 
child,WTERMSIG(status));  
}
共4页: 上一页 [1] [2] 3 [4] 下一页

上一篇:Linux文件系统损坏后的修复技巧详细介绍   下一篇:Linux操作系统的内核解读入门


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·基于Eclipse的红帽开发者工作站beta版发布
·介绍几种Linux下快被人们忽略的编程语言
·Linux系统安装Monodevelop开发工具
·在Linux操作系统下共享库编程的方法介绍
·开源空间 网络安全工具开发函数库Libnet
·Linux系统中BSD套接口开发基础介绍
·在Ubuntu下建立PowerPC405EP的开发环境
·如何在Ubuntu 7.0上实现C/C++开发环境
·Linux socket编程实例:echo服务器程序
·GNU/Linux应用程序编程:用管道进行编程
·uClinux系统上运行自已编写的Hello程序
·Linux系统下设置环境变量三法
·Linux系统下设置环境变量Path的方法
·Ubuntu 7.0 Linux建立C与GTK的开发环境
·实例解析:编写简单的Linux服务控制脚本
·Linux Kernel 2.6.25-rc1已经释出了
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux_shell 特殊符号的简单介绍
·Linux Shell学习小记
·Linux下的编程环境知识点滴
·Linux内核学习记
·Linux编程时获取当前时间实例解析
·Linux操作系统下java中文无法显示问题
·Linux系统中限制用户进程CPU及内存占用
·Linux内核引导参数详解
·Linux环境下Wine的中文显示以及freetyp
·新手学堂 Linux的sort命令使用
·Linux 2.6内核中sysfs文件系统简述
·Linux程序开发的一些基础概念
  阅读排行
·开源空间 网络安全工具开发函数库Libne
·Linux socket编程实例:echo服务器程序
·GNU/Linux应用程序编程:用管道进行编
·如何在Ubuntu 7.0上实现C/C++开发环境
·JSP应用语法详解大全 (1)
·Linux系统中BSD套接口开发基础介绍
·JSP应用语法详解大全 (2)
·JSP开发入门
·浅析JSP开发中的对象和范围属性
·在Linux操作系统下共享库编程的方法介
·JSP应用语法详解大全 (3)
·基于Eclipse的红帽开发者工作站beta版
·Linux系统安装Monodevelop开发工具
·Linux系统下设置环境变量Path的方法
·JSP单页面网站文件管理器
网摘收藏: