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;
}

现象:

相关推荐
yzx99101313 分钟前
服务器生成图片
运维·服务器
db_murphy1 小时前
Oracle数据块8KB、OS默认认块管理4KB,是否需调整大小为一致?
linux
liulilittle2 小时前
C++ TAP(基于任务的异步编程模式)
服务器·开发语言·网络·c++·分布式·任务·tap
小阳睡不醒4 小时前
小白成长之路-部署Zabbix7(二)
android·运维
mCell4 小时前
从删库到跑路?这50个Linux命令能保你职业生涯
linux·windows·macos
杰克逊的日记4 小时前
GPU运维常见问题处理
linux·运维·gpu
caolib5 小时前
无需云服务器的内网穿透方案 -- cloudflare tunnel
运维·服务器·内网穿透·tunnel·cloudflared
奇舞精选5 小时前
k8s基本概念初探
运维
誰能久伴不乏5 小时前
Linux系统调用概述与实现:深入浅出的解析
linux·运维·服务器
程序员学习随笔6 小时前
Linux进程深度解析(2):fork/exec写时拷贝性能优化与exit资源回收机制(进程创建和销毁)
linux·运维·服务器