@@ -85,45 +85,74 @@ void ssl_server(int portnum) {
85
85
SSL_CTX_free (ctx );
86
86
}
87
87
88
- static void * display_running () {
89
- char load [] = "\\|/-" ;
90
- int i = 0 , msec = 0 ;
91
- long sec = 0 , min = 0 , hour = 0 ;
92
- mx_printstr ("\033[1;33mNOTE: \033[33mPress \033[1;33mCtrl+C \033[33mto exit\033[0m\n" );
93
- while (true) {
94
- if (i == 4 )
95
- i = 0 ;
96
- if (++ msec % 5 == 0 )
97
- msec = 0 , sec ++ ;
98
- if (sec == 60 )
99
- sec = 0 , min ++ ;
100
- if (min == 60 )
101
- min = 0 , hour ++ ;
102
- mx_printstr ("\r\033[32mServer is running \033[35m" );
103
- if (hour > 0 ) {
104
- mx_printint (hour );
105
- mx_printstr (" h. " );
106
- }
107
- if (min > 0 ) {
108
- mx_printint (min );
109
- mx_printstr (" m. " );
110
- }
111
- mx_printint (sec );
112
- mx_printstr (" s. \033[36m" );
113
- mx_printchar (load [i ++ ]);
114
- mx_printstr ("\033[0m " );
115
- usleep (200000 );
116
- }
117
- return NULL ;
88
+ // static void *display_running() {
89
+ // char load[] = "\\|/-";
90
+ // int i = 0, msec = 0;
91
+ // long sec = 0, min = 0, hour = 0;
92
+ // mx_printstr("\033[1;33mNOTE: \033[33mPress \033[1;33mCtrl+C \033[33mto exit\033[0m\n");
93
+ // while (true) {
94
+ // if (i == 4)
95
+ // i = 0;
96
+ // if (++msec % 5 == 0)
97
+ // msec = 0, sec++;
98
+ // if (sec == 60)
99
+ // sec = 0, min++;
100
+ // if (min == 60)
101
+ // min = 0, hour++;
102
+ // mx_printstr("\r\033[32mServer is running \033[35m");
103
+ // if (hour > 0) {
104
+ // mx_printint(hour);
105
+ // mx_printstr(" h. ");
106
+ // }
107
+ // if (min > 0) {
108
+ // mx_printint(min);
109
+ // mx_printstr(" m. ");
110
+ // }
111
+ // mx_printint(sec);
112
+ // mx_printstr(" s. \033[36m");
113
+ // mx_printchar(load[i++]);
114
+ // mx_printstr("\033[0m ");
115
+ // usleep(200000);
116
+ // }
117
+ // return NULL;
118
+ // }
119
+
120
+ static void daemonize () {
121
+ pid_t pid ;
122
+ pid = fork ();
123
+ if (pid < 0 )
124
+ exit (EXIT_FAILURE );
125
+ if (pid > 0 )
126
+ exit (EXIT_SUCCESS );
127
+ if (setsid () < 0 )
128
+ exit (EXIT_FAILURE );
129
+ signal (SIGCHLD , SIG_IGN );
130
+ signal (SIGHUP , SIG_IGN );
131
+
132
+ pid = fork ();
133
+ if (pid < 0 )
134
+ exit (EXIT_FAILURE );
135
+ if (pid > 0 )
136
+ exit (EXIT_SUCCESS );
137
+ umask (0 );
138
+
139
+ int uchat_pid = getpid ();
140
+ printf ("\033[32muchat_server started successfully\033[0m\n" );
141
+ printf ("\033[36muchat_server pid: \033[0m%d\n" , uchat_pid );
142
+ printf ("\033[1;33mTo \033[1;31mSTOP \033[1;33muchat_server: \033[0mkill %d\n" , uchat_pid );
143
+ printf ("\033[1;33mIf you lost uchat_server pid:\033[0m ps -ax | grep uchat_server\n" );
144
+ for (int x = sysconf (_SC_OPEN_MAX ); x >= 0 ; x -- )
145
+ close (x );
118
146
}
119
147
120
148
int main (int argc , char * argv []) {
121
- pthread_t display_thread = NULL ;
122
- pthread_create (& display_thread , NULL , display_running , NULL );
149
+ // pthread_t display_thread = NULL;
150
+ // pthread_create(&display_thread, NULL, display_running, NULL);
123
151
if (argc != 2 ) {
124
152
fprintf (stderr , "usage : ./uchat_server [port]\n" );
125
153
exit (EXIT_FAILURE );
126
154
}
155
+ daemonize ();
127
156
int portnum = atoi (argv [1 ]);
128
157
ssl_server (portnum );
129
158
}
0 commit comments