系统级程序设计-进程管理

在课堂上学习了基于linux系统的程序设计中对进程的管理,了解到多个进程同时运行时,如果各进程优先级相同,则共同竞争系统资源,CPU随机调用,谁优先获取谁就先执行。

1.接下来便是在课堂上分析的代码内容,首先创建进程,需要用到的代码如下:

#include<unistd.h>
pid_t fork(void)

在执行了上述语句后,系统就会创建一个与相同的进程,父子进程共同进行。

返回值说明
成功返回两个值:父进程的fork函数返回子进程的pid,子进程的fork函数返回0.
不成功 父进程fork函数返回-1.

案例1:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(){
	pid_t tempPid;
	tempPid = fork();
	if(tempPid == -1){
		perror("fork error");
	}else if(tempPid > 0){//parent
		printf("parent process, pid = %d, ppid = %d\n", getpid(), getppid());
	}else{//child
		printf("child process, pid = %d, ppid = %d\n", getpid(), getppid());
	}//of if
	printf("......finish......");
	return 0;
}//of main

2.创建多个进程:

对上述创建一个子进程的代码进行修改后,可以同时创建多个子进程,只要加入如下的一个简单循环即可:

int i;
for(i = 0; i < 2; i ++){
	tempPid = fork();
}//of for i

完整代码如下

案例2:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(){
	pid_t tempPid;
	int i;
	for(i = 0; i < 2; i ++){
		if((tempPid = fork()) == 0){
			break;
		}//of if
	}//of for i
	if(tempPid == -1){
		perror("fork error");
	}else if(tempPid > 0){//parent
		printf("parent process, pid = %d, ppid = %d\n", getpid(), getppid());
	}else{//child
		printf("I am child process = %d, pid = %d, ppid = %d\n", i + 1, getpid(), getppid());
	}//of if
	printf("......finish......");
	return 0;
}//of main

3.利用sleep函数延缓程序的执行(改变程序执行顺序) 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(){
	pid_t tempPid;
	int i;
	for(i = 0; i < 2; i ++){
		if((tempPid = fork()) == 0){
			break;
		}//of if
	}//of for i
	if(tempPid == -1){
		perror("fork error");
	}else if(tempPid > 0){//parent
		sleep(2);
		printf("parent process, pid = %d, ppid = %d\n", getpid(), getppid());
	}else{//child
	 	sleep(i);
		printf("I am child process = %d, pid = %d, ppid = %d\n", i + 1, getpid(), getppid());
	}//of if
	printf("......finish......");
	return 0;
}//of main

 

总结:

经过这节课的学习,我初步了解了linux系统编程中如何对进程进行控制,进一步加深了对基于linux系统的程序设计的理解,受益匪浅。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值