关于进程控制和管理的几点
2009-03-23 21:10
225 查看
进程创建:
不同的操作系统创建进程的方式不尽相同,对于传统 UNIX系统中是这样处理的:父进程使用fork()创建子进程。Linux保留传统的fork()创建子进程;创建后,父子进程存在以下关系:调用一次,返回两次,分别返回父子进程;父子进程是独立的进程,可以并发执行;父子进程具有独立的地址空间,如果父子进程改变某个变量的值,子进程将不会看到这个变化,反之 亦然,因为 父子进程在相互独立的地址空间中并发执行。
另一个系统调用是vfork(),它允许子进程借用父进程的地址空间,父进程将被阻塞至子进程执行execve()或exit(),向父进程归还地址空间并唤醒它。
[程序:fork()函数相关]
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main()
{
pid_t result;
result = fork();
int newret;
int i=1; //用于测试父子进程之间的独立性
if(result == -1)
{
perror("创建子进程失败!");
exit;
}
else if(result == 0)
{
printf("返回傎是:%d/n,i的值是:%d/n说明是子进程:/n此进程的进程号是:%d/n此进程的父进程是:%d/n",result,i+1,getpid(),getppid());
newret = system("ls -l");
}
else
{
sleep(10); //休眠10秒
printf("返回傎是:%d/n,i的值是:%d/n说明是父进程:/n此进程的进程号是:%d/n此进程的父进程是:%d/n",result,i,getpid(),getppid());
newret = system("ls -al");
}
}
程序中,先用fork()创建一个进程。再分别显示子/父进程的进程号和其父进程号,当result返回0时说明是新创建的进程号,而当result返回一个进程号时(不是-1和0),说明是父进程。而在子进程中的i自加1时,对于父进程并没有影响。
不同的操作系统创建进程的方式不尽相同,对于传统 UNIX系统中是这样处理的:父进程使用fork()创建子进程。Linux保留传统的fork()创建子进程;创建后,父子进程存在以下关系:调用一次,返回两次,分别返回父子进程;父子进程是独立的进程,可以并发执行;父子进程具有独立的地址空间,如果父子进程改变某个变量的值,子进程将不会看到这个变化,反之 亦然,因为 父子进程在相互独立的地址空间中并发执行。
另一个系统调用是vfork(),它允许子进程借用父进程的地址空间,父进程将被阻塞至子进程执行execve()或exit(),向父进程归还地址空间并唤醒它。
[程序:fork()函数相关]
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main()
{
pid_t result;
result = fork();
int newret;
int i=1; //用于测试父子进程之间的独立性
if(result == -1)
{
perror("创建子进程失败!");
exit;
}
else if(result == 0)
{
printf("返回傎是:%d/n,i的值是:%d/n说明是子进程:/n此进程的进程号是:%d/n此进程的父进程是:%d/n",result,i+1,getpid(),getppid());
newret = system("ls -l");
}
else
{
sleep(10); //休眠10秒
printf("返回傎是:%d/n,i的值是:%d/n说明是父进程:/n此进程的进程号是:%d/n此进程的父进程是:%d/n",result,i,getpid(),getppid());
newret = system("ls -al");
}
}
程序中,先用fork()创建一个进程。再分别显示子/父进程的进程号和其父进程号,当result返回0时说明是新创建的进程号,而当result返回一个进程号时(不是-1和0),说明是父进程。而在子进程中的i自加1时,对于父进程并没有影响。
相关文章推荐
- 运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析
- Linux关于进程的查看和管理
- 关于node.js的进程管理
- 项目中关于变更管理的几点心得
- 进程管理及作业控制
- 进程管理及作业控制
- linux进程管理与作业控制
- 关于进程管理方面的问题
- Linux 124课程 8、管理本地的Linux用户和组、控制服务和守护进程
- 进程管理和作业控制
- linux-RAID磁盘阵列、进程管理、日志管理、systemctl控制
- Linux下进程管理与控制
- Linux中关于控制进程的命令总结
- 进程管理与控制进程
- Linux之进程控制与管理at命令(定时执行)
- 关于如何控制进程并发数
- 进程控制1——关于进程控制的一些基础知识
- 关于php的多进程控制的了解2,3事
- Linux的进程管理和作业控制
- Linux之进程控制与管理实验五