linux进程(一)
2015-10-15 07:43
531 查看
通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在POSIX 规范中fork和kill系统调用的功能和使用。
kill()函数用于删除执行中的程序或者任务。调用格式为: kill(int PID, int IID); 其中:PID是要被杀死的进程号,IID为向将被杀死的进程发送的中断号。
kill -l 可以查看信号对应的整数
#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 可以查看信号对应的整数
相关文章推荐
- Linux战地日记—date命令详细示例
- CentOS install btsync
- 一些实用的Linux命令
- 解决Centos7中文显示乱码
- Linux远程连接Windows10出现"连接被对端重置"错误 解决方法
- linux 常用命令
- RedHat7 SELinux
- 简单解决Linux改装windows后启动出现grub rescue的问题
- Linux tcpdump命令详解大全
- 零基础入门篇之Linux及Arm-Linux程序开发笔记
- Linux 中 CURL常用命令详解
- Linux 查找指定文件并删除
- Linux:Linux查找及压缩
- Linux中进行用户UID测试导致系统报错
- 【转】linux下使用openssl生成 csr crt CA证书
- linux命令行中光标(非vim光标)移动技巧------提升开发效率
- 贡献30本经典Linux学习和开发教程和资料,都是pdf完整版的
- 【linux】mkfifo 命令创建命名管道实现进程之间通信
- 【linux】mkfifo 命令创建命名管道实现进程之间通信
- Linux鸟哥私房菜学习笔记(四)