C 库 - exit() 函数



C 的stdlibexit() 函数允许我们立即终止或退出调用进程。exit() 函数关闭属于进程的所有打开的文件描述符,并且进程的任何子进程都将由进程 1(init)继承,并且进程父进程将收到 SIGCHLD 信号。

“SIGCHLD”信号用于管理子进程,允许父进程处理其终止并收集退出状态。

语法

以下是exit() 函数的 C 库语法 -

void exit(int status)

参数

此函数接受一个参数 -

  • status - 它表示返回给父进程的状态值或退出代码。

  • 0 或 EXIT_SUCCESS:0 或 EXIT_SUCCESS 表示程序已成功执行,未遇到任何错误。
  • 1 或 EXIT_FAILURE:1 或 EXIT_FAILURE 表示程序遇到错误,无法成功执行。

返回值

此函数不返回值。

示例 1:带有状态“EXIT_FAILURE”的 exit()

让我们创建一个基本的 c 程序来演示 exit() 函数的使用。

#include <stdio.h>
#include <stdlib.h>
int main() {
   FILE *fp;

   printf("Opening the tutorialspoint.txt\n");
   // open the file in read mode
   fp = fopen("tutorialspoint.txt", "r");
   
   if (fp == NULL) {
      printf("Error opening file\n");
      // Terminate the program with an error code
      exit(EXIT_FAILURE);
   }
   fclose(fp);
   // Terminate the program successfully
   exit(EXIT_SUCCESS);
}

输出

以下是输出 -

Open the tutorialspoint.txt
Error opening file

示例 2

在此示例中,我们使用exit() 函数在 'i' 达到 5 时立即终止进程。

#include <stdio.h> 
#include <stdlib.h>
int main(){
   // print number from 0 to 5
   int i;
   for(i=0;i<=7;i++){
      // if i is equals to 5 then terminates
      if(i==5){
         exit(0);
      }	     
      else{
         printf("%d\n",i);
      }         
   }
   return 0;
}

输出

以下是输出 -

0
1
2
3
4

示例 3

这是一个获取用户详细信息的另一个程序。如果用户详细信息与 if 条件匹配,则 'exit(EXIT_SUCCESS)' 将起作用。否则 'exit(EXIT_FAILURE)'。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
   const char *username = "tutorialspoint";
   const char *password = "tp1234";

   // Check the credentials
   if (strcmp(username, "tutorialspoint") == 0 && strcmp(password, "tp1234") == 0){
      printf("Login successful!\n");
      // if user details match exit
      exit(EXIT_SUCCESS); 
   } else {
      fprintf(stderr, "Invalid credentials!\n");
      // if user details not match exit
      exit(EXIT_FAILURE); 
   }
   return 0;
}

输出

以下是输出 -

Login successful!
广告