【Linux】进程创建和终止 | slab分配器
在Linux中,进程的创建通常使用fork()
系统调用。fork()
会创建一个与父进程几乎完全相同的子进程副本。子进程会从fork()
调用的下一行代码处开始执行。
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == -1) {
// 错误处理
perror("fork failed");
return 1;
} else if (pid == 0) {
// 子进程中的分支
printf("子进程正在运行,PID: %d\n", getpid());
} else {
// 父进程中的分支
printf("父进程正在运行,创建的子进程PID: %d\n", pid);
}
// 确保父进程或子进程中的代码不会继续执行
return 0;
}
进程终止可以使用exit()
或_exit
系统调用。exit()
会先刷新缓冲区,然后关闭所有打开的流,而_exit()
会直接终止进程而不执行任何清理工作。
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("进程即将终止\n");
exit(EXIT_SUCCESS); // 正常终止
// _exit(0); // 也可以使用_exit来终止进程
}
在Linux中,slab
分配器是一种内存分配机制,用于分配小型对象,以减少外部碎片和提高内存的使用效率。slab
分配器通常不直接由应用程序代码调用,而是由Linux内核或一些底层库在后台使用。如果你需要调试或检查slab
分配器的状态,可以使用/proc/slabinfo
文件或通过slabtop
命令来查看。
cat /proc/slabinfo
slabtop
以上命令可以在终端中执行,以查看当前的slab
分配器的状态和分配信息。
评论已关闭