#include "head.h"
int main(int argc, char **argv){
//1. 打开当前文件夹opendir,读文件夹下的文件readdir
//2. 如果文件存在,编译并执行,如果文件不存在,vim打开文件
//3. 保存退出,编译并执行
if (argc == 1){
fprintf(stderr, "usage: %s filename!\n", argv[0]);
exit(1);
}
DIR *dirname;
dirname = opendir(".");
struct dirent *dir;
int flag = 0;
pid_t pid;
while((dir = readdir(dirname)) != NULL ){
if(!strcmp(dir->d_name, argv[1])){
flag = 1;// 找到了
}
}
if(flag == 0){
int fd;
if((fd = open(argv[1], O_RDWR | O_CREAT, 0644)) < 0){
perror("open");
exit(1);
}
if((pid = fork()) < 0){
perror("fork");
exit(1);
}
if(pid == 0){
execl("/usr/bin/vim", "vim", argv[1], NULL);
}
}
wait(NULL);
if ((pid = fork()) < 0){
perror("fork1");
exit(1);
}
if (pid == 0){
execl("/usr/bin/gcc", "gcc", argv[1],"-o","test.out", NULL);
}else{
wait(NULL);
if((pid = fork()) < 0){
perror("fork2");
exit(1);
}
if(pid == 0){
execl("/home/xibowen/study/system_programming/4.process/test.out","test.out", NULL);
}else{
wait(NULL);
}
}
return 0;
}