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

📄 fork_process.c

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 C
字号:
/* * fork_process.c *	 A simple wrapper on top of fork(). This does not handle the *	 EXEC_BACKEND case; it might be extended to do so, but it would be *	 considerably more complex. * * Copyright (c) 1996-2005, PostgreSQL Global Development Group * * IDENTIFICATION *	  $PostgreSQL: pgsql/src/backend/postmaster/fork_process.c,v 1.4 2005/10/15 02:49:23 momjian Exp $ */#include "postgres.h"#include "postmaster/fork_process.h"#include <time.h>#include <sys/time.h>#include <unistd.h>#ifndef WIN32/* * Wrapper for fork(). Return values are the same as those for fork(): * -1 if the fork failed, 0 in the child process, and the PID of the * child in the parent process. */pid_tfork_process(void){	pid_t		result;#ifdef LINUX_PROFILE	struct itimerval prof_itimer;#endif	/*	 * Flush stdio channels just before fork, to avoid double-output problems.	 * Ideally we'd use fflush(NULL) here, but there are still a few non-ANSI	 * stdio libraries out there (like SunOS 4.1.x) that coredump if we do.	 * Presently stdout and stderr are the only stdio output channels used by	 * the postmaster, so fflush'ing them should be sufficient.	 */	fflush(stdout);	fflush(stderr);#ifdef LINUX_PROFILE	/*	 * Linux's fork() resets the profiling timer in the child process. If we	 * want to profile child processes then we need to save and restore the	 * timer setting.  This is a waste of time if not profiling, however, so	 * only do it if commanded by specific -DLINUX_PROFILE switch.	 */	getitimer(ITIMER_PROF, &prof_itimer);#endif#ifdef __BEOS__	/* Specific beos actions before backend startup */	beos_before_backend_startup();#endif	result = fork();	if (result == (pid_t) -1)	{		/* fork failed */#ifdef __BEOS__		/* Specific beos backend startup actions */		beos_backend_startup_failed();#endif	}	else if (result == 0)	{		/* fork succeeded, in child */#ifdef LINUX_PROFILE		setitimer(ITIMER_PROF, &prof_itimer, NULL);#endif#ifdef __BEOS__		/* Specific beos backend startup actions */		beos_backend_startup();#endif	}	return result;}#endif   /* ! WIN32 */

⌨️ 快捷键说明

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