- Timestamp:
- Aug 1, 2008, 3:44:49 PM (15 years ago)
- Location:
- neercs/trunk/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
neercs/trunk/src/main.c
r2614 r2624 332 332 if(!attach) 333 333 { 334 pid_t pid; 335 char * sess; 336 337 pid = fork(); 338 if(pid < 0) 339 { 340 fprintf(stderr, "Failed to create child process\n"); 341 goto end; 342 } 343 if(pid == 0) 344 { 345 int fd; 346 close(0); 347 close(1); 348 close(2); 349 fd = open("/dev/null", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); 350 dup2(fd, 0); 351 #ifndef DEBUG 352 dup2(fd, 1); 353 dup2(fd, 2); 354 if (fd > 2) 355 close(fd); 356 #else 357 if(fd != 0) 358 close(fd); 359 fd = open("/tmp/log.txt", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); 360 dup2(fd, 1); 361 dup2(fd, 2); 362 if (fd > 2) 363 close(fd); 364 #endif 365 setsid(); 366 return server_main(to_grab, to_start, screen_list); 367 } 368 create_socket(screen_list, SOCK_CLIENT); 369 while((sess = connect_socket(screen_list, SOCK_SERVER)) == NULL) 370 usleep(100); 371 free(sess); 372 373 /* Create main canvas and associated caca window */ 374 screen_list->cv = cucul_create_canvas(0, 0); 375 screen_list->dp = caca_create_display(screen_list->cv); 376 if(!screen_list->dp) 377 goto end; 378 caca_set_cursor(screen_list->dp, 1); 379 380 request_attach(screen_list); 334 if(start_server(to_grab, to_start, screen_list)) 335 goto end; 381 336 } 382 337 -
neercs/trunk/src/neercs.h
r2614 r2624 228 228 char * connect_socket(struct screen_list* screen_list, enum socket_type socktype); 229 229 char ** list_sockets(char *socket_dir, char *session_name); 230 int s erver_main(int *to_grab, char **to_start, struct screen_list *screen_list);230 int start_server(int *to_grab, char **to_start, struct screen_list *screen_list); 231 231 int send_event(caca_event_t ev, struct screen_list* screen_list); 232 232 -
neercs/trunk/src/server.c
r2623 r2624 106 106 } 107 107 108 int server_main(int *to_grab, char **to_start, struct screen_list *screen_list)108 static int server_main(int *to_grab, char **to_start, struct screen_list *screen_list) 109 109 { 110 110 int i; … … 390 390 } 391 391 392 int start_server(int *to_grab, char **to_start, struct screen_list *screen_list) 393 { 394 pid_t pid; 395 char * sess; 396 397 pid = fork(); 398 if(pid < 0) 399 { 400 fprintf(stderr, "Failed to create child process\n"); 401 return 1; 402 } 403 if(pid == 0) 404 { 405 int fd; 406 close(0); 407 close(1); 408 close(2); 409 fd = open("/dev/null", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); 410 dup2(fd, 0); 411 #ifndef DEBUG 412 dup2(fd, 1); 413 dup2(fd, 2); 414 if (fd > 2) 415 close(fd); 416 #else 417 if(fd != 0) 418 close(fd); 419 fd = open("/tmp/log.txt", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR); 420 dup2(fd, 1); 421 dup2(fd, 2); 422 if (fd > 2) 423 close(fd); 424 #endif 425 setsid(); 426 return server_main(to_grab, to_start, screen_list); 427 } 428 create_socket(screen_list, SOCK_CLIENT); 429 while((sess = connect_socket(screen_list, SOCK_SERVER)) == NULL) 430 usleep(100); 431 free(sess); 432 433 /* Create main canvas and associated caca window */ 434 screen_list->cv = cucul_create_canvas(0, 0); 435 screen_list->dp = caca_create_display(screen_list->cv); 436 if(!screen_list->dp) 437 return 1; 438 caca_set_cursor(screen_list->dp, 1); 439 440 request_attach(screen_list); 441 442 return 0; 443 } 444 392 445 long long get_us(void) 393 446 {
Note: See TracChangeset
for help on using the changeset viewer.