运行c语言是出现核心已转储,C语言核心已转储,被各种折磨,求大神带,老是提示printjob函数中test11: malloc.c:2451: sYSMALLOc: Ass...

头文件global.h

#ifndef _GLOBAL_H_

#define _GLOBAL_H_

#define JOBINFO "jid\tpid\tdefpri\tcurpri\twaittime\tcreatetime\truntime\tjobstate"

#ifndef DEBUG

#define DEBUG

#endif

enum jobstate{

RUNNING,READY,DONE,NONNORMALEXIT

};

/*命令名称*/

enum cmdtype{

DEQ,ENQ,STAT

};

/*当前的作业*/

struct jobinfo{

int jid; /*作业id*/

pid_t pid; /*进程id*/

char **arglist; /*命令参数*/

int defpri; /*默认优先级*/

int curpri; /*当前优先级*/

int ownerid; /*作业所有者id*/

int waittime; /*作业在等待队列里边等待时间*/

time_t createtime; /*作业创建的时间*/

int runtime; /*作业运行时间*/

enum jobstate state; /*作业状态*/

};

struct waitqueue{

struct jobinfo *waitjob;

struct waitqueue *next;

};

void printjob(struct jobinfo *now,int flag);

#endif

文件:

#include"global.h"

/*打印一项作业*/

void printjob(struct jobinfo *now,int flag)

{

if(now == NULL)

return;

if(!flag){

printf(JOBINFO);

printf("\n");

}

printf("%d\t%d\t%d\t%d\t%d\t%s\t%d",now->jid,now->pid,now->defpri,

now->curpri,now->waittime,ctime(&now->createtime),now->runtime);

switch(now->state){

case RUNNING :

printf("\trunning\n");

break;

case READY :

printf("\tready\n");

break;

case DONE :

printf("\tdone\n");

break;

default :

assert(now->state == NONNORMALEXIT);

printf("\tnonomalexit\n");

}

}

int main()

{

struct waitqueue *queue;

int i;

char *s;

char **arglist;

arglist = (char **)malloc(sizeof(char *) * 2);

printf("ok\n");

s = (char *)malloc(sizeof(char)*10);

strcpy(s,"hello");

arglist[0] = s;

arglist[1] = NULL;

queue = (struct waitqueue*)malloc(sizeof(struct waitqueue));

queue->next = NULL;

queue->waitjob = (struct jobinfo*)malloc(sizeof(struct jobinfo*));

queue->waitjob->jid = 1;

queue->waitjob->defpri = 0;

queue->waitjob->curpri = 0;

queue->waitjob->waittime= 0;

queue->waitjob->createtime = time(NULL);

queue->waitjob->runtime = 0;

queue->waitjob->state = DEQ;

queue->waitjob->arglist = arglist;

for(i = 0;i < PRIORITY;i++)

waitmaxtrix[i] = NULL;

joinqueue(queue); /*加入队列,没有提示错误*/

printf("%d\n",waitmaxtrix[1] == NULL ? 1 : 0);

printf("%d\t%s\n",waitmaxtrix[0]->waitjob->jid,waitmaxtrix[0]->waitjob->arglist[0]);

printjob(queue->waitjob,0);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值