操作系统第二次实验

这篇博客详细介绍了操作系统实验中的进程管理,包括getpid、getppid、signal、fork、pause、execve、waitpid和sleep等函数的使用,并通过具体的代码实例解析了这些函数在实际操作中的应用,展示了实验的执行过程和结果。
摘要由CSDN通过智能技术生成

实验内容与步骤:

实验前期准备:(一些函数的说明)

getpid();getppid():

getpid 返回当前进程的进程号,getppid 返回当前进程父进程的进程号

signal():

sighandler_t signal(int signum, sighandler_t handler);

signum 要捕捉的信号; handler 进程中自定义的信号处理函数名;signal 调用成功会返回信号处理函数的返回值,不成功返回-1,并设置 系统变量 errno 为 SIG_ERR。

从程序中向一个进程发送信号有两种方法:调用 shell 的 kill 命令,调 用kill系统调用函数。kill能够发送除杀死一个进程(SIGKILL、SIGTERM、 SIGQUIT) 之外的其他信号,例如键盘中断(Ctrl+C)信号 SIGINT,进程暂停(Ctrl+Z)信号 SIGTSTP 等等。

fork():

创建子进程,fork 成功创建子进程后将返回子进程的进程号,不成功会返回-1。

pause():

pause 挂起调用它的进程直到有任何信号到达。

execve(const char *path, const char *argv[], const char * envp[]):

path 要装入的新的执行文件的绝对路径名字符串.;argv[] 要传递给新执行程序的完整的命令参数列表(可以为空);envp[] 要传递给新执行程序的完整的环境变量参数列表(可以为空)。
Exec 执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再 返回到调用进程了。如果 exec 调用失败,它会返回-1。

waitpid(pid_t pid,int *status,int option):

status 用于保留子进程的退出状态
pid 可以为以下可能值:
-1 等待所有 PGID 等于 PID 的绝对值的子进程
1 等待所有子进程 0 等待所有 PGID 等于调用进程的子进程
>0 等待 PID 等于 pid 的子进程
option 规定了调用 waitpid 进程的行为: WNOHANG 没有子进程时立即返回 WUNTRACED 没有报告状态的进程时返回 wait 和 waitpi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值