|
楼主 |
发表于 2002-11-25 21:41:08
|
显示全部楼层
本程序的目的 是创建动态链队
然后执行队头 进程 我创建了 链队 num 表示优先级
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdio.h>
struct proc{
char name[2]; /*存放 进程名 */
int num;
struct proc *next;
};
int n;
struct proc *head, *this, *new, *current, *temp;
void new_record(void);
void sortlist(void);
void excutable(void);
pid_t pid;
main ()
{
int i, j;
for(i=0; i<=8; i++){
new_record();
}
sortlist();
excutable();
for(j=1; j<=7; j++){
current = head;
excutable();
if(n>2){
do{
this->num = this->num+1;
if(this->num > 32){
this->num = this->num%32;
sortlist();
}
this = this->next;
}while(this->next = NULL);
}
free(new);
}
} //lost a '}'
void new_record(void) /* 动态创建链表 */
{
int i;
new = (struct proc *)malloc(sizeof (struct proc));/*创建新的结点*/
if(head == NULL)
head = new;
else{
this = head;
while(this->next!=NULL)
this = this->next;
this->next = new;
}
this = new;
printf("\nenter name:"); //what did u mean of '\e'??
scanf("%s",this->name);
printf("\nenter num:"); //what did u mean of '\e'??
this->num = i;
printf("\n new over");
this->next = NULL;
}
void sortlist(void) /* 排序根据优先数num */ 二重 法
{
int i,j;
this = head;
for(i=1; i<=8; i++)
for(j=i+1; j<=8; j++){
if(this->num < this->next->num){ /*比较本结点和后一个结点num值的大小 */
temp = this;
this = this->next;
this->next = temp;
}
this = this->next;
}
}
void excutable(void) /*执行程序创建进程任务为延时 */
{
n = random()%4;
current = head;
pid=fork();
if ( pid>0 ){
sleep(n);
}
} |
|