这仅仅只是单个进程的代码,比较简单(离真正的开发还有着很大的差距),代码如下:
#include <stdio.h>
#include <stdarg.h>
#define ERROR -1
#define OJ_WA -2
#define OJ_RE -3
#define OJ_AC -4
#define OJ_CE -5
#define BUFFER_SIZE 30
int execute_cmd(char* fmt, ...) {
char cmd[BUFFER_SIZE];
int ret = 0;
va_list ap;
va_start(ap, fmt);
vsprintf(cmd, fmt, ap);
ret = system(cmd);
va_end(ap);
return ret;
}
int compile(char ob_name[BUFFER_SIZE], char source_name[BUFFER_SIZE]) {
int ret = 0;
ret = execute_cmd("gcc -o %s %s",ob_name, source_name); // gcc -o -O2 -Wall -lm --static -std=c99
return ret;
}
int judge(char ob_name[BUFFER_SIZE], char file_name[BUFFER_SIZE]) {
int ret = 0;
char stmp[BUFFER_SIZE], stxt[BUFFER_SIZE];
FILE* ptmp;
FILE* pfile;
ret = execute_cmd("./%s > %s", ob_name, file_name);
if(ret != 0) {
printf("shell error\n");
re