Unix模擬題(三)
阿新 • • 發佈:2018-10-31
全是問題的程式,別問我為什麼,明天就考試了...
#include <sys/types.h> #include <errno.h> #include <pwd.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <dirent.h> #include <sys/stat.h> static void search(int signo){ DIR*dp; struct dirent* dirp; struct stat sb; if(signo==SIGQUIT){ dp = opendir("/home/ubuntu/"); while ((dirp = readdir(dp)) != NULL ){ char file_name[50]; sprintf(file_name,"%s%s","/home/ubuntu/",dirp->d_name); stat(file_name, &sb); if(S_ISREG(sb.st_mode)) printf("yes, this is a regular file: "); printf("%s \n", dirp->d_name); } } } static void move(int signo){ if(signo==SIGINT){ rename("test.c","test/test.c"); printf("move file succcessfully!\n"); } } int main(){ signal(SIGQUIT,search); signal(SIGINT,move); int pid = fork(); if(pid<0){ printf("fork error\n"); } else if(pid==0){ printf("in child\n"); printf("wait for signal\n"); pause(); } else{ printf("in parent\n"); printf("use kill\n"); kill(pid,SIGINT); kill(pid,SIGQUIT); } return 0; }