?? main.c
字號:
/*
* POSIX下進程控制的實驗程序殘缺版 1.2
* 作者:Sunner Sun
* 最后修改時間:2005-3-10 23:59
*/
#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; /* 子進程的自編號,從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}; /* 存放每個子進程的id */
if (argc > 1)
{
/* 命令行參數中的第一個參數表示建立幾個子進程,最多10個 */
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++)
{
if((child_pid=fork())==0)
{
proc_number = i;
do_something();
}
else
{
pid[i]=child_pid;
}
/* 在這里填寫代碼,建立child_proc_number個子進程
* 子進程要執行
* proc_number = i;
* do_something();
* 父進程把子進程的id保存到pid[i] */
}
/* 讓用戶選擇殺死哪個進程。輸入數字(自編號)表示殺死該進程
* 輸入q退出 */
while ((ch = getchar()) != 'q')
{
if (isdigit(ch))
{
kill(pid[ch-'0'],SIGTERM);
/* 在這里填寫代碼,向pid[ch-'0']發信號SIGTERM,
* 殺死該子進程 */
}
}
kill(0,SIGKILL);
return 0;
}
void do_something()
{
for(;;)
{
/* 打印子進程自編號。為清晰,在每個號碼前加“號碼+3”個空格
* 比如號碼是1,就打印" 1" */
printf("This is process No.%*d\n",
proc_number+3,
proc_number);
sleep(2); /* 主動阻塞兩秒鐘 */
}
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -