Unix环境高级编程学习笔记(一)

本文介绍如何使用fork创建新进程,详细解释了父进程和子进程的返回值区别。同时探讨了出错处理机制,包括errno的作用及如何利用strerror和perror函数打印出错信息。此外还讨论了出错恢复的方法以及系统调用与C函数之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调用fork 创建新进程,返回两次,父进程返回子进程ID,子进程返回0;(分别在父进程和子进程返回)。

 

出错处理: errno,只有当函数的返回值指明错误才会检验其值。任一函数都不会将errno值设置为0。

 

C标准定义的两个函数,帮助打印出错信息:

1 char *strerror(int errnum);

此函数将errnum映射成一个出错信息字符串,并返回此字符串的指针。

void perror(const char *msg)

输出由msg指向的字符串,然后是一个冒号,一个空格,接着是对于errno值的出错信息。

 

出错恢复:出错分为致命性和非致命性两类。

致命性无法执行恢复动作。

非致命性的出错,由资源短缺等载本质上出错是暂时的,则可以恢复。一般的恢复动作是延迟一些时间,然后再试。这种技术也可以应用于应用开发。 (指数补偿算法),每次重复等待的时间更长。

 

系统调用和C函数.

Unix操作系统按传统方式在机器的汇编语言中定义内核入口点。故大部分系统调用就是调用C函数库。其中的区别是库函数可以替换但系统调用不能替换。

进程控制系统调用,通常由用户应用程序直接调用,但为了简化某些常见情况,UNIX系统也提供了一些库函数。

例子:sbrk()和malloc()函数。sbrk()系统分配另一块空间给进程,而malloc()则在用户层次管理这一空间。

 

 

转载于:https://www.cnblogs.com/yestreen/archive/2013/04/27/3047923.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值