进程控制编程

今天主要学习了有关进程的知识,主要有进程与程序的差别,进程号获取函数(getpid()),进程创建函数(两种,fork与vfork),以及与创建函数中的父,子函数有关函数system(),wait(),waitpid(),passwd(),alarm(),exec函数族等。
进程的生命周期
1.创建: 每个进程都是由其父进程创建,进程可以创建子进程,子进程又可以创建子进程的子进程
2.运行: 多个进程可以同时存在,进程间可以通信。
运行又可分为:执行状态,就绪状态,等待状态。
3.撤销: 进程可以被撤销,从而结束一个进程的运行

1、进程与程序

进程:具有独立功能的程序的一次有效运行,也是资源分配的最小单元
程序:是放在磁盘上的可执行文件。

进程是动态的,程序是静态的:
程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制

进程是暂时的,程序是长久的:
进程是一个状态变化的过程,程序可长久保存

组成不同:
进程的组成包括程序、数据和进程控制块(即进程状态信息)

进程与程序的对应关系:
通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
2,函数getpid();
就是获取父,子的进程号。
3,函数fork();pid_t fork(void);
一般创建过程:
pid_t pid;
pid = fork();
if(-1 == pid) //若创建过程返回值为-1,则创建失败
{
perror(“fork”);
exit(1);
}
else if(0 == pid) //返回值为0,子进程
{
printf(“This is child !\n”);
}
else
{
printf(“This is father !\n”);
}
4,函数vfork();pid_t vfork();
一般创建模式与fork大体相同;不同之处在子进程要指定退出状态exit(1)。

总结fork与vfork:
相同之处:
(1),都是父创建子,子创建0;
(2),在程序运行时,分别给子,父进程开辟4个g的虚拟地址空间,包括内核态和用户态,并且以1/3的模式分配。用户态又分为数据段(全局,静态)、代码段(代码)、堆(malloc)、栈(局部,形参)。
不同之处:
(1),fork 子,父进程没有优先级,同时进行。vfork子进程先执行完毕后,父进程再执行。
(2),fork中子进程 拷贝 父进程数据,俗称:写时拷贝;子父进程不共享地址空间(进程号不一样)。vfork子父进程共享地址空间,但进程号不一样。vfork配合exec函数族使用(启动新的进程,通俗点讲就是在本程序执行过程中,又可以打开要调用的程序并执行)。
(3),fork程序中定义变量a,在子父进程运行后,输出的值与地址都一样。
而vfork,父进程的运算是建立在子进程基础之上,但地址空间还一样。

5、系统函数system();在程序中执行某个命令;
eg:system(“clear”); //清屏运行程序。

6、wait(),过程在父进程中;
pid_t pid;
pid = fork();
if(-1 == pid)
{
perror(“fork”);
exit(1);
}
else if(0 == pid)
{
printf(“This is child !\n”);
exit(1);
}
else
{
printf(“This is father !\n”);
int status; //保存子进程的退出状态
//wait(&status); //1等待子进程结束。2回收子进程资源
witpid(pid,&status,0); //pid为子进程号,0表示waitpid与wait一样
if(WIFEXITED(status)) //若返回值为真,表示子进程正常退出
{
printf(“子进程正常退出 %d\n”,WEXITSTATUS(status)); //输出%d表示子进程退出状态值。
}
else
{
printf(“子进程异常退出 %d\n”,WEXITSTATUS(status));
}
}

7、用户管理命令passwd;
8、闹钟信号传送alarm(); //括号内直接写几秒就可以;
功能:设置信号传送闹钟,即用来设置信号SIGALRM在进过参数x秒后发送给目前的进程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值