C语言进程编程(持续更新)

getpid函数:

原型:pid_t getpid(void)

特性:返回值是PID值

用途:获取当前进程PID

用法例

cpp 复制代码
#include<stdio.h>
#include <sys/types.h>
#include<unistd.h>
int main()
{
	pid_t pid;
	pid = getpid();
	printf("pid = %d\n",pid);
}

现象:

fork函数:

原型:pid_t fork(void);

特性:fork函数调用成功,返回两次,返回值为0,代表当前进程是子进程,返回值非负数(返回值是子进程的pid),代表当前进程为父进程(执行的是fork()下面的内容(包括本条)),拷贝父进程的存储空间

用途:创建进程

用法例:

cpp 复制代码
#include<stdio.h>
#include <sys/types.h>
#include<unistd.h>
int main()
{
	pid_t pid;
	int sign;
	pid = getpid();
	printf("father pid = %d\n",pid);
	sign = fork();
	pid = getpid();
	if (sign>0)
	{
		printf("this is father,pid = %d\n",pid);
	}
	else if (sign==0)
	{
		printf("this is child,pid = %d\n",pid);
	}
}

现象:

vfork函数:

原型:pid_t vfork(void);

特性:vfork函数调用成功,返回两次,返回值为0,代表当前进程是子进程,返回值非负数(返回值是子进程的pid),代表当前进程为父进程(执行的是vfork()下面的内容(包括本条)),不拷贝父进程的存储空间

用法例:

cpp 复制代码
#include<stdio.h>
#include <sys/types.h>
#include<unistd.h>
#include <stdlib.h>
int main()
{
	pid_t pid;
	int data = 10;
	int sign;
	pid = getpid();
	printf("father pid = %d\n",pid);
	sign = vfork();
	pid = getpid();
	if (sign>0)
	{
		printf("this is father,pid = %d\n",pid);
		printf("data = %d\n",data);
	}
	else if (sign==0)
	{
		printf("this is child,pid = %d\n",pid);
		data = 5;
		exit(0);
	}
	return 0;
}

现象:

相关推荐
豆是浪个8 小时前
Linux(Centos 7.6)命令详解:top
linux·运维·服务器
历程里程碑9 小时前
Linxu14 进程一
linux·c语言·开发语言·数据结构·c++·笔记·算法
baidu_huihui9 小时前
`sudo DNF` 是 Linux 系统中以管理员权限执行 DNF 包管理命令的标准方式
linux·dnf
JiL 奥9 小时前
Nexus制品归档(c/c++项目)
c语言·c++
梵刹古音9 小时前
【C语言】 字符型变量
c语言·开发语言·嵌入式
峥嵘life9 小时前
Android 16 EDLA测试STS模块
android·大数据·linux·学习
qq_316837759 小时前
docker 运行 cn_clip
运维·docker·容器
代码AC不AC9 小时前
【Linux】进程程序替换
linux·进程·程序替换
Zach_yuan9 小时前
UDP网络编程:从入门到精通
linux·网络·网络协议·udp
_叶小格_10 小时前
cp、scp、rsync命令详解
linux·运维·服务器·ubuntu·centos·运维开发