您的位置:首页 > 运维架构 > Linux

linux进程(一)

2015-10-15 07:43 531 查看
                          通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX 规范中fork和kill系统调用的功能和使用。

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <ctype.h>

#define MAX_CHILD_NUMBER 10

#define SLEEP_INTERVAL 2

int proc_number=0;
void do_something();

int main(int argc,char *argv[])
{
/* 子进程个数 */
int child_proc_number = MAX_CHILD_NUMBER;
int i,ch;
pid_t child_pid;
pid_t pid[10]={0};
if(argc>1)/* 命令行参数第一个参数表示子进程个数*/

{
child_proc_number = atoi(argv[1]);
child_proc_number = (child_proc_number > 10)?10:child_proc_number;
}
for(i=0;i<child_proc_number;i++){
child_pid = fork();
if(child_pid == 0){
proc_number = i;
do_something();
}else{
pid[i] = child_pid;
}
}
/* 让用户选择杀死进程,数字表示杀死该进程,q退出 */
while((ch=getchar()) != 'q'){
if(isdigit(ch)){

kill(pid[ch-'0'],15);
}
}
/* 在这里填写代码,杀死本组的所有进程 */
printf("\n我将要杀死所有的进程\n");
sleep(SLEEP_INTERVAL);
for(i=0;i<child_proc_number;i++)
kill(pid[i],15);
return 0;
}

void do_something(){
for(;;){
printf("this is process No.%d and its pid is %d\n",proc_number,getpid());
sleep(SLEEP_INTERVAL); /* 主动阻塞两秒钟 */
}
}


kill()函数用于删除执行中的程序或者任务。调用格式为:  kill(int PID,   int IID);      其中:PID是要被杀死的进程号,IID为向将被杀死的进程发送的中断号。

kill -l 可以查看信号对应的整数







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: