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

现象:

相关推荐
坚持编程的菜鸟16 小时前
LeetCode每日一题——缀点成线
c语言·算法·leetcode
小白银子16 小时前
零基础从头教学Linux(Day 54)
linux·windows·python
degen_16 小时前
PEIM安装PPI和调用其他PPI的相关函数
c语言·笔记
---学无止境---16 小时前
Linux中inode节点号的获取相关函数的实现
linux
一文解千机16 小时前
Termux 安装盘搜搜PanSou,快速找到网盘资源链接,支持各大网盘,自定义部署,数据存储到手机,打造移动搜索资源库
linux·termux·盘搜搜·pansou·资源搜索·网盘资源链接搜索·手机网盘搜索
喜欢你,还有大家16 小时前
企业安全防护之——防火墙
服务器·网络·安全
小蜗快跑丶17 小时前
内网构建https
运维·服务器
啊森要自信17 小时前
【MySQL 数据库】使用C语言操作MySQL
linux·c语言·开发语言·数据库·mysql
做运维的阿瑞17 小时前
DevOps 生命周期完全指南
运维·容器·devops
BullSmall17 小时前
Ansible三大Web界面方案全解析
运维·ansible