河南省建设工程质量安全监督网站,广西备案工信部网站,wordpress用户前端创建相册,科技公司注册经营范围目录 进程创建相关的函数
获取当前进程的进程ID#xff08;PID#xff09;
获取当前进程的父进程ID#xff08;PPID#xff09;
创建一个新的进程
fork()剖析
调用格式
创建子进程
子进程与父进程
父子进程执行流
代码演示 进程创建相关的函数 Linux中进程ID为pi…目录 进程创建相关的函数
获取当前进程的进程IDPID
获取当前进程的父进程IDPPID
创建一个新的进程
fork()剖析
调用格式
创建子进程
子进程与父进程
父子进程执行流
代码演示 进程创建相关的函数 Linux中进程ID为pid_t类型其实本质就是一个正整数通过ps aux命令可以得到验证。pid为1的进程是Linux系统中创建的第一个进程。 获取当前进程的进程IDPID #include sys/types.h
#include unistd.h
pid_t getpid(void); 获取当前进程的父进程IDPPID #include sys/types.h
#include unistd.h
pid_t getppid(void); 创建一个新的进程 #include unistd.h
pid_t fork(void); fork()剖析 fork() 是一个用于在 Unix 和类 Unix 操作系统上创建新进程的系统调用。在 fork() 被调用时它会创建一个当前进程的副本这个副本称为子进程而调用 fork() 的进程称为父进程。以下是关于 fork() 的一些剖析 调用格式 #include unistd.h
pid_t fork(void); 返回值在父进程中fork() 返回子进程的进程ID在子进程中返回0如果出错返回-1。 创建子进程 当 fork() 被调用时操作系统会复制父进程的地址空间、文件描述符等信息创建一个全新的子进程。父进程和子进程之间的区别在于fork() 返回的值不同。 子进程与父进程 子进程的资源如文件描述符、内存内容是父进程的副本但是它们在内存中拥有不同的地址空间。这意味着父进程和子进程之间的变量是相互独立的。子进程会继承父进程的打开文件描述符但是它们是独立的关闭一个在父进程中打开的文件并不会影响子进程中的文件。 父子进程执行流 父进程和子进程同时开始执行 fork() 后的代码。它们的执行流是相互独立的。在父子进程中fork() 返回的值是不同的在父进程中返回子进程的ID在子进程中返回0。 代码演示 #include stdio.h
#include stdlib.h
#include sys/types.h
#include unistd.hint main()
{// 在父进程中创建子进程pid_t pid fork();printf(当前进程fork()的返回值: %d\n, pid);if (pid 0){// 父进程执行的逻辑printf(我是父进程, pid %d\n, getpid());}else if (pid 0){// 子进程执行的逻辑printf(我是子进程, pid %d, 我爹是: %d\n, getpid(), getppid());}else // pid -1{// 创建子进程失败了}// 不加判断, 父子进程都会执行这个循环for (int i 0; i 5; i){printf(%d\n, i);}return 0;
}