全国新农村建设中心网站,wordpress整站迁移,中国互联网头部企业,机械加工网络接单进程终止
进程终止是指一个正在运行的进程结束其执行并释放占用的系统资源的过程。进程可以通过以下几种方式终止#xff1a; 正常终止#xff1a;进程完成了它的任务#xff0c;或者遇到了终止条件#xff0c;例如调用了exit()函数或主函数执行完毕。 异常终止#xff1…进程终止
进程终止是指一个正在运行的进程结束其执行并释放占用的系统资源的过程。进程可以通过以下几种方式终止 正常终止进程完成了它的任务或者遇到了终止条件例如调用了exit()函数或主函数执行完毕。 异常终止进程可能会遇到一些异常情况例如访问非法内存、发生除零错误等。操作系统会接收到这些异常并强制终止进程。 被其他进程终止另一个进程可以发送信号给目标进程要求其终止。例如在命令行中使用kill命令终止特定进程。 系统终止操作系统可能需要终止某些进程以保护系统的稳定性例如当系统资源不足时。 在进程终止时操作系统会回收已分配给该进程的内存空间、文件描述符、打开的文件等资源并将进程的退出状态返回给父进程。 自定义退出码
enum{success0,open_err, malloc_err
};const char* errorToDesc(int code)
{switch(code){case success:return success;case open_err:return file open error;case malloc_err:return malloc error;default:return unknown error;}
}int Print()
{printf(hello Linux\n);printf(hello Linux\n);printf(hello Linux\n);printf(hello Linux\n);return 0;
}
int main()
{int nPrint();printf(n%d\n,n);int codemalloc_err;printf(%s\n,errorToDesc(code));return 0;
}打印出退出码表示的含义 举例 exit()和_exit()
exit()和_exit()都是用于正常终止进程的函数 进程等待
进程等待指的是一个进程暂停其执行直到满足某个条件或事件发生后才会继续执行。在操作系统中进程可以通过等待来同步和协调与其他进程的操作。
wait
在Linux中wait()是一个系统调用是父进程在等待子进程执行完毕之前挂起自身并等待子进程的终止状态。 父进程可以使用wait()等待子进程的终止。当父进程调用wait()时如果子进程已经终止则父进程会立即返回并可以通过子进程的终止状态来了解子进程终止的 原因和状态。
下面来看例子
waitpid()
waitpid()是Linux中的一个系统调用用于等待指定子进程的终止并获取其终止状态。它可以用来在父进程中等待一个特定的子进程或者等待任何子进程的终止。
waitpid()函数的原型如下
#include sys/types.h
#include sys/wait.hpid_t waitpid(pid_t pid, int *status, int options);其中参数pid指定要等待的子进程的PID可以有以下几种取值 -1等待任意子进程终止。 0等待与调用进程在同一进程组的任意子进程终止。 大于0等待指定PID的子进程终止。 参数status是一个指向整型变量的指针用于存储子进程的终止状态。 参数options用于指定附加的选项如WNOHANG表示非阻塞方式等待即如果没有子进程终止立即返回。 例子
WIFEIERED 非阻塞等待 进程替换
进程替换是指在操作系统中将一个正在运行的进程替换为一个新的进程的过程。这个过程包括终止当前进程并加载新的程序代码、数据和资源使新的进程开始执行。
在Linux中常用exec()函数族来实现。 包括
#include unistd.h
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg, ...,char *const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);命名理解 l(list) : 表示参数采用列表 v(vector) : 参数用数组 p(path) : 有p自动搜索环境变量PATH e(env) : 表示自己维护环境变量 接下来看它们的使用 多进程替换