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

现象:

相关推荐
AGI学习社8 分钟前
2024中国排名前十AI大模型进展、应用案例与发展趋势
linux·服务器·人工智能·华为·llama
加油,旭杏22 分钟前
【go语言】变量和常量
服务器·开发语言·golang
H.2029 分钟前
centos7执行yum操作时报错Could not retrieve mirrorlist http://mirrorlist.centos.org解决
linux·centos
wanhengidc42 分钟前
网站服务器中的文件被自动删除的原因
运维·服务器
DARLING Zero two♡1 小时前
【初阶数据结构】逆流的回环链桥:双链表
c语言·数据结构·c++·链表·双链表
9毫米的幻想1 小时前
【Linux系统】—— 编译器 gcc/g++ 的使用
linux·运维·服务器·c语言·c++
helloliyh1 小时前
Windows和Linux系统安装东方通
linux·运维·windows
小深ai硬件分享2 小时前
Keras、TensorFlow、PyTorch框架对比及服务器配置揭秘
服务器·人工智能·深度学习
LilySesy2 小时前
【业务案例】F.13——SAP系统标准的清帐程序有BUG?
运维·bug·sap·abap·esb·internet服务
张某人想退休2 小时前
自动化实现的思路变化
运维·自动化