Sigquit im Kinderprozess erzeugt keinen KernmüllmittelLinux

Linux verstehen
Guest
 Sigquit im Kinderprozess erzeugt keinen Kernmüllmittel

Post by Guest »

Dieses Verhalten hat mich in letzter Zeit verrückt gemacht, obwohl es wahrscheinlich eine vernünftige Erklärung gibt, vielleicht sogar eine Lösung. Schule und erkundete das Sigquit -Signal. Ich fand etwas Seltsames: Wenn ich ein "normales" C-Programm schreibe und es mit Sigquit gebe, wird es Sigquit und sendet eine Nachricht, in der "Beenden (Core Dumped)" sendet. Es ist dasselbe wie zum Beispiel das Eingeben von "Katze" in Bash und dann Strg-. SIG_IGN und das Kind zu sig_dfl erhält das Kind das Sigquit-Signal und der Prozess wird beendet, aber die oben genannte Fehlermeldung wird nicht angezeigt. Ich habe auch Waitpid verwendet, um den Status zu fangen und ihn mit WTermsig zu analysieren, und es ist 3, so dass es von Sigquit beendet wurde. Ich habe einen Beispielcode beigefügt, um mein Problem zu demonstrieren, da der von mir bisher geschriebene Shell -Code riesig ist. />

Code: Select all

int main(int argc, char **argv, char **envp)
{
signal(SIGQUIT, SIG_IGN);
int pid = fork();
// signal(SIGQUIT, SIG_IGN);
if (pid == 0)
{
signal(SIGQUIT, SIG_DFL);
// execve("/usr/bin/cat", argv, envp);
char buffer[100];
read(0, buffer, 50);
printf("buffer: %s\n", buffer);
return (0);
}
int status;
waitpid(pid, &status, 0);
printf("Status: %i\n", WIFSIGNALED(status));
if (WIFSIGNALED(status))
printf("Signal: %i\n", WTERMSIG(status));
#ifdef WCOREDUMP
if (WCOREDUMP(status))
printf("Core dumped!\n");
#endif
return (0);
}
Andere Dinge, die ich ausprobiert habe

[*] Ulimit -c Unlimited < BR /> Sigquit vor und nach dem Gabed (siehe Beispielcode) < /li>
Versuchte es mit Execve und "Cat" - gleiches Verhalten < /li>
< LI> Das Programm ohne Fork () verhält sich wie erwartet. BR /> Core_Pattern sagt: | /WSL-Capture-Crash %t %e %p %s < /li>
Ich benutze WSL2 mit Ubuntu, probierte das Programm aber bereits auf einem Schulcomputer aus, der ausgeführt wird "Normal" Ubuntu und das gleiche Verhalten erhalten < /li>
< /ul>
Vielleicht ist dieses Verhalten auch zu erwarten? Aber wenn ja - warum? Der Grund, warum dies überhaupt ein Problem für mich ist, ist, dass meine Schale ähnliche Signale wie Bash behandeln sollte. Am Ende möchte ich, dass sich die Unterbrechung der Katze wie möglich wie möglich von Cat in Bash unterbrochen hat. Wenn dies nicht der Fall ist, möchte ich wirklich wissen, warum es ein anderes Verhalten von Eltern- und Kinderprozessen gibt. < /P>
Vielen Dank im Voraus! Es ist meine erste Frage hier. Bitte lassen Sie es mich bitte auch wissen, wenn ich meine Frage in Zukunft verbessern kann.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post