linux进程相关函数
来源:互联网 发布:网络发票发票分配 编辑:程序博客网 时间:2024/05/08 12:10
1.获取进程号
获取当前进程号
函数名 :getpid
原型:pid_t getpid(void)
所属库文件:sys/types.h 、unistd.h
参数:无参数
功能:返回当前进程ID
返回值:成功返回当前ID,该函数always successful获取父进程号:
函数名 :getppid
原型:pid_t getppid(void)
所属库文件:sys/types.h 、unistd.h
参数:无参数
功能:返回当前进程ID
返回值:成功返回当前ID,该函数always successful
2.进程创建相关函数
fork(vfork)
函数原型:pid_t fork(void)
头文件:sys/types.h unistd.h
功能:在当前进程中创建一个进程
返回值:返回值为0,失败-1或者errno
参数:无参数进程的执行过程的理解
程序:
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unstd.h>void main(){ fork(); printf("123");}
该程序执行的结果是打印两次123
要解释这个结果就要理解进程的执行过程,首先该函数这个主进程要运行,因为子进程是主进程的一部分,所以子进程要执行一次(第一次执行);然后主进程创建的一个子进程,这个子进程本身要执行一次(第二次执行)。因此会打印两次123.
注意:子进程的代码是fork函数以下部分。
- 关于fork(vfork)的返回值的问题:
其实成功创建一个进程后,fork会返回给父进程其所创建进程的进程号,然后返回创建成功的标志值0。
程序:
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unstd.h>void main(){ if((fork())>0)//父进程空间 { printf("child = %d\n",getpid()); printf("ppid = %d\n",getppid()); printf("parents process"); exit(0); } else//子进程空间 { printf("child = %d\n",getpid()); printf("ppid = %d\n",getppid()); printf("child process"); exit(0); }}
结果:
if : 第一次打印的是当前进程的进程号和父进程号(bash进程)
else:第二次打印的是创建进程的进程号和其父进程号(改程序的主进程)
总结:通过以上结果可以证明成功创建一个进程后,创建的这个进程会返回给父进程所创建的这个进程的进程号,返回0进入子进程。通过这一点也可以区分父进程和子进程的执行空间。
- fork与vfork的区别
3.进程的退出
父进程既可使用
exit(0)
退出也可以使用return(0)
退出子进程只能使用
exit(0)
退出
4.进程的等待函数
- wait():
函数原型:pid_t wait(int *status)
功能:调用挂起他的进程,知道子进程结束,然后才接着运行该进程。
返回值:成功返回终止的那个进程的id,失败返回-1.
参数:记录进程退出的状态(是正常退出还是异常退出)。
5.执行进程
execl():
所属库:unistd.h
函数原型:int execl(const char *path, const char *arg, ....)
函数功能:运行可执行文件
返回值:成功无返回值,失败返回-1或者错误信息的指针
参数:path
:可执行文件的路径 arg
:可执行文件所需要的参数
程序实例:
#include <stdio.h>#include <unistd.h>#include <sys/types.h>void main(){ if( !(fork()) ) { execl("/bin/ls","/home",NULL);//列出home目录下的文件和文件夹 exit(0); }}
注意:execl
与fork
的对比
- linux进程相关函数
- linux下进程相关函数
- LINUX进程相关的几个函数
- linux的进程相关函数简单总结
- 进程相关函数
- 进程枚举相关函数
- 进程的相关函数
- Linux系统进程管理及相关操作函数
- Linux C——进程控制相关函数
- linux 进程相关
- linux 进程相关简介
- Linux进程相关命令
- Linux基础-进程相关
- linux进程相关命令
- 【Linux kernel】进程相关
- linux进程相关概念
- Linux进程相关
- Linux 进程相关 常用命令
- 【转】MAC下打开FTP服务
- Android判断网络是否连接以及连接类型
- AsnycTask更新主线程UI基本代码
- 07-渲染流程-1-流程
- 字符编码小结
- linux进程相关函数
- count、find、binary_search、lower_bound、upper_bound和equal_range的区别
- 信息图:Python异常速查
- onCreate()的参数Bundle saveInstanceState
- [Logmnr]对重做日志进行数据挖掘
- linux学习基础---bash命令行基本操作
- 【STL】序列式容器细节
- Android中Bitmap和Drawable
- 创建两个进程和主线程交替进行