⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unixprogram.cpp

📁 linux 下多进程编程demo,fork的应用
💻 CPP
字号:
#include "stdio.h"  
#include "unistd.h"
#include "string.h"  
#include<pthread.h> /* Linux线程库头文件 */  
#include <iostream>
#include <time.h>    
#include <sys/types.h>
#include <unistd.h>

using namespace std;
 

 static int i= 0;
 int start() 
{ 
	time_t BeginTime,EndTime;

	BeginTime = time((time_t*)0);

	#define mynul(n) (T##n)+(T##n)
	int i= 3;	
  int Ti= 2;

	i = mynul(i);
  printf("I=%d\r\n",i);
	EndTime = time((time_t*)0);
	printf("total time = %d  \r\n",(EndTime - BeginTime));

	



	pid_t pid;
	pid_t pid1;

	switch (pid = fork())
	{
		case -1:
			/* 这里pid为-1,fork函数失败 */
			/* 一些可能的原因是 */
			/* 进程数或虚拟内存用尽 */
			perror("The fork failed!");
			printf("***4345345****\r\n");
		break;
		
		case 0:
			/* pid为0,子进程 */
			/* 这里,我们是孩子,要做什么? */
			/* ... */
			/* 但是做完后, 我们需要做类似下面: */
			pid1 = getppid();
			printf("Parent's pid is %d\n",pid1 );
			printf("***************\r\n");
			break;
		default:
 		i++;
		//pid = fork();
		printf("i= %d\r\n",i);
		/* pid大于0,为父进程得到的子进程号 */
		printf("Child's pid is %d\n",pid);
	}


	switch (pid = fork())
	{
		case -1:
			/* 这里pid为-1,fork函数失败 */
			/* 一些可能的原因是 */
			/* 进程数或虚拟内存用尽 */
			perror("The fork failed!");
			printf("***4345345****\r\n");
		break;
		
		case 0:
			/* pid为0,子进程 */
			/* 这里,我们是孩子,要做什么? */
			/* ... */
			/* 但是做完后, 我们需要做类似下面: */
			pid1 = getppid();
			printf("Parent's pid is %d\n",pid1 );
			printf("***************\r\n");
			break;
		default:
 		i++;
		//pid = fork();
		printf("i= %d\r\n",i);
		/* pid大于0,为父进程得到的子进程号 */
		printf("Child's pid is %d\n",pid);
	}
	return 0;
} 

int main(void)
{  	
	pthread_t tid1, tid2;  

	if( pthread_create( &tid1,NULL,(void *(*)(void *))start,NULL ) )
	{  
		printf( "创建线程失败!\n" );  
		return 0;  
	}  

	if( pthread_join( tid1,NULL ) )
	{
		printf( "等待线程结束失败!\n" );  
		return 0;  
	}  
	
}  



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -