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

现象:

相关推荐
浩~~3 分钟前
Centos pcs群集
linux·运维·centos
jasmine1__14 分钟前
selinux和防火墙实验
linux·运维·服务器
无聊的菜鸟21 分钟前
TI毫米波雷达(七)——high accurary示例分析(二)
c语言·硬件架构·射频工程
我们的五年24 分钟前
【Linux课程学习】:环境变量:HOME,su与su - 的区别,让程序在哪些用户下能运行的原理,环境变量具有全局性的原因?
linux·运维·服务器·c++
qq_401780821 小时前
0.查找命令
linux·运维·服务器
Ven%1 小时前
ubuntu服务器睡眠命令
linux·运维·服务器·ubuntu
Eric.Lee20211 小时前
SenseVoice 音频转文字&情绪识别 - python 实现
服务器·人工智能·python·音视频·情绪识别·音频识别
戴草帽的大z1 小时前
基于CentOS系统利用Kamailio搭建企业级SIP服务器
linux·centos·kamailio·sip
2401_875726151 小时前
Unix和Linux之异同
linux·unix
jasmine1__1 小时前
nfs服务器
运维·服务器