Meaning of Exit Code 11 in C?

后端 未结 3 2227
不思量自难忘°
不思量自难忘° 2021-02-19 01:41

What\'s the general meaning of an exit code 11 in C? I\'ve looked around and can not find a definitive answer so I thought I would ask here. It comes when i try to add an elemen

3条回答
  •  青春惊慌失措
    2021-02-19 01:56

    The other answers have missed a possible ambiguity in the phrase "exit code". I suspect what you meant by "exit code" is the status code retrieved with the wait family of syscalls, as in:

    /* assume a child process has already been created */
    int status;
    wait(&status);
    printf("exit code %d\n", status);
    

    If you do something like that you may very will see "exit code 11" if the child process segfaults. If the child process actually called exit(11) you might see "exit code 2816" instead.

    It would be better to call those things "wait code" or "wait status" instead of "exit code", to avoid confusion with the value passed to exit. A wait code contains several pieces of information packed together into a single integer. Normally, you should not look at the integer directly (like I did above in that printf). You should instead use the W* macros from to analyze it.

    Start with the WIF* macros to find out what kind of thing happened, then use that information to decide which other W* macros to use to get the details.

    if(WIFEXITED(status)) {
      /* The child process exited normally */
      printf("Exit value %d\n", WEXITSTATUS(status));
    } else if(WIFSIGNALED(status)) {
      /* The child process was killed by a signal. Note the use of strsignal
         to make the output human-readable. */
      printf("Killed by %s\n", strsignal(WTERMSIG(status)));
    } else {
      /* ... you might want to handle "stopped" or "continued" events here */
    }
    

提交回复
热议问题