linux C进程
Posted saintdingtheGreat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux C进程相关的知识,希望对你有一定的参考价值。
- 一个典型的例子
#include <stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<sys/types.h> int main() { pid_t pid; pid_t pid2; int var =88; char *str=(char*)malloc(sizeof(char)*10); memset(str,0x00,10); pid=fork(); if(pid<0) { fprintf(stderr,"fork failed "); } else if(pid==0) { sleep(2); printf("I‘m the child %d ",pid); pid2 =getpid(); printf("I‘m the child %d ",pid2); strcpy(str,"lovecpc"); var++; } else { pid2=getpid(); printf("I‘m the parent is %d, the child is %d ",pid2,pid); strcpy(str,"wantcpc"); wait(NULL); printf("complete "); } printf("str is %s, straddr = %p, var=%d, varaddr=%p ",str,str,var,&var); }
通过fork执行的流程显示,子进程会执行和父进程一样的命令,例如执行最后的printf,一般情况下fork()函数返回一个整型值,通过判断这个值程序员会知晓:pid>0是父进程代码的状态行为,pid==0是子进程的执行行为,pid<0进程创建失败
无论如何,子进程大体上执行了和父进程几乎一样的命令(除了pid>0或pid==0条件语句中执行的部分不同)
- 如果让子进程执行其他命令,exec函数族将是一个很好的选择
以上是关于linux C进程的主要内容,如果未能解决你的问题,请参考以下文章
LINUX PID 1和SYSTEMD PID 0 是内核的一部分,主要用于内进换页,内核初始化的最后一步就是启动 init 进程。这个进程是系统的第一个进程,PID 为 1,又叫超级进程(代码片段
Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段