实现一个简单的bash程序,2号信号到来时,打印一下当前的路径,可以创建子进程执行其他程序,父进程等待(其他内容自己添加,比如输入exit就退出,ls命令等等。)
ctrl+c后输入ls
void sigFunc(int sigNum){
int ret = 0;
//打印当前目录
char buf[512] = { 0 };
strcpy(buf, getcwd(NULL,0));
puts(buf);
//输入命令,如ls .
memset(&buf, 0, sizeof(buf));
fscanf(stdin, "%s", &buf);
//退出程序
if (strcmp(buf, "exit") == 0) {
exit(0);
}
//创建子程序,实现bash命令
if (fork()) {
wait(NULL);
}
else {
ret = execl("/bin/bash", "/bin/bash/", "-c", buf, NULL);
}
}
int main(int argc,char*argv[]) {
if (SIG_ERR != signal(SIGINT, sigFunc)) {
while(1);
}
else {
puts("erro");
}
return 0;
}