linux进程(一)

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


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值