PostgreSQL Source Code: src/backend/postmaster/fork_process.c Source File (original) (raw)

Go to the documentation of this file.

1

2

3

4

5

6

7

8

9

10

11

13

14#include <fcntl.h>

15#include <signal.h>

17#include <sys/stat.h>

20

24

25#ifndef WIN32

26

27

28

29

30

31

32pid_t

34{

35 pid_t result;

36 const char *oomfilename;

37 sigset_t save_mask;

38

39#ifdef LINUX_PROFILE

41#endif

42

43

44

45

46 fflush(NULL);

47

48#ifdef LINUX_PROFILE

49

50

51

52

53

54

55

56 getitimer(ITIMER_PROF, &prof_itimer);

57#endif

58

59

60

61

62

63

64

65 sigprocmask(SIG_SETMASK, &BlockSig, &save_mask);

66 result = fork();

67 if (result == 0)

68 {

69

71#ifdef LINUX_PROFILE

72 setitimer(ITIMER_PROF, &prof_itimer, NULL);

73#endif

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91 oomfilename = getenv("PG_OOM_ADJUST_FILE");

92

93 if (oomfilename != NULL)

94 {

95

96

97

98

99 int fd = open(oomfilename, O_WRONLY, 0);

100

101

102 if (fd >= 0)

103 {

104 const char *oomvalue = getenv("PG_OOM_ADJUST_VALUE");

105 int rc;

106

107 if (oomvalue == NULL)

108 oomvalue = "0";

109

110 rc = write(fd, oomvalue, strlen(oomvalue));

111 (void) rc;

113 }

114 }

115

116

118 }

119 else

120 {

121

122 sigprocmask(SIG_SETMASK, &save_mask, NULL);

123 }

124

125 return result;

126}

127

128#endif

void pg_strong_random_init(void)

static int fd(const char *x, int i)

int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue)