linux进程(一)

来源:互联网 发布:核工业湖州勘察院 知乎 编辑:程序博客网 时间:2024/06/05 07:58

                          通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在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 2int 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 可以查看信号对应的整数


1 0