我試圖暫停該過程,但它不起作用。 這是代碼的一部分。有Ctrl + Z和Ctrl + C。 Ctrl + C正在工作。我不明白爲什麼用Z它不起作用。 (實際的代碼):如何處理mini-shell中的Ctrl + Z信號。 C
//ctrl+Z
void sigstop(int p){
signal(SIGTSTP,&sigstop);
kill(my_pid,SIGSTOP);
fflush(stdout);
}
// Ctrl+C
void sigkill(int p){
signal(SIGINT,&sigkill);
kill(my_pid,SIGKILL);
fflush(stdout);
}
代碼中的主要方法:
...
my_pid = fork();
if (my_pid == 0) {
signal(SIGTSTP,&sigstop); //for Ctrl+Z
signal(SIGINT,&sigkill); //for Ctrl+C
checkCommand();
execvp(argv[0], argv);
exit(getpid());
}
你不應該叫'fflush`上`stdin`,因爲這是不確定的行爲。 – fouronnes 2011-02-03 20:25:34
你的`sigstop`和`sigkill`函數需要一個`int`參數:你的編譯器應該給你警告錯誤的函數簽名。 – 2011-02-03 20:26:51