wie behandeln Sie das signal Ctrl + Z in der mini-shell. C

Ich versuche, setzen Sie den Prozess aus, aber es funktioniert nicht.
dies ist Teil des Codes. es gibt Strg+Z und Strg+C. Strg+C funktioniert. Ich Schaffe es nicht, warum mit Z funktioniert es nicht.
(der eigentliche code):

//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);
}

Code in der main-Methode:

...
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());    
}
Sie sollten nicht nennen fflush auf stdin da dies zu undefiniertem Verhalten.
Ihre sigstop und sigkill Funktionen ein int parameter: der compiler müsste, dass Sie die Warnungen über die falsche Funktion Unterschrift.
Sie sollten sich nicht registrieren einen handler für SIGTSTP da das Standardverhalten ist, um den Prozess zu stoppen.
ja, tatsächlich änderte ich den code vor. es hat stdout, und ich habe auch int als parameter. aber seine immer noch nicht funktioniert. versehentlich setzte ich älteren code.
was SIGTSTP? was soll ich tun?

InformationsquelleAutor Khuseyn | 2011-02-03

Schreibe einen Kommentar