Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | A simpler method of ensuring that backoffice does not cling to the standard input and output. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | backoffice-full-close |
| Files: | files | file ages | folders |
| SHA3-256: |
8c52c6741283f61f78cfa3a6587f1328 |
| User & Date: | drh 2018-08-08 18:10:22.844 |
Context
|
2018-08-08
| ||
| 18:13 | Set the default backoffice-nodelay back to off. ... (check-in: 353a4e12d5 user: drh tags: backoffice-full-close) | |
| 18:10 | A simpler method of ensuring that backoffice does not cling to the standard input and output. ... (check-in: 8c52c67412 user: drh tags: backoffice-full-close) | |
| 17:57 | In the backoffice process, close the 0, 1, and 2 file descriptiors and reopen them as /dev/null, on unix. ... (check-in: 6865fb72cf user: drh tags: backoffice-full-close) | |
Changes
Changes to src/backoffice.c.
| ︙ | ︙ | |||
707 708 709 710 711 712 713 |
backofficeTrace(
"/***** Subprocess %d creates backoffice child %lu *****/\n",
GETPID(), GetProcessId((HANDLE)x));
if( x>=0 ) return;
}
#else /* unix */
{
| | < < | | 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 |
backofficeTrace(
"/***** Subprocess %d creates backoffice child %lu *****/\n",
GETPID(), GetProcessId((HANDLE)x));
if( x>=0 ) return;
}
#else /* unix */
{
pid_t pid = fork();
if( pid>0 ){
/* This is the parent in a successful fork(). Return immediately. */
backofficeTrace(
"/***** Subprocess %d creates backoffice child %d *****/\n",
GETPID(), (int)pid);
return;
}
if( pid==0 ){
/* This is the child of a successful fork(). Run backoffice. */
int i;
setsid();
for(i=0; i<=2; i++){
close(i);
open("/dev/null", O_RDWR);
}
for(i=3; i<100; i++){ close(i); }
db_open_repository(backofficeDb);
backofficeDb = "x";
backoffice_thread();
db_close(1);
backofficeTrace("/***** Backoffice Child %d exits *****/\n", GETPID());
|
| ︙ | ︙ |
Changes to src/main.c.
| ︙ | ︙ | |||
131 132 133 134 135 136 137 |
struct Global {
int argc; char **argv; /* Command-line arguments to the program */
char *nameOfExe; /* Full path of executable. */
const char *zErrlog; /* Log errors to this file, if not NULL */
int isConst; /* True if the output is unchanging & cacheable */
const char *zVfsName; /* The VFS to use for database connections */
| < | 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
struct Global {
int argc; char **argv; /* Command-line arguments to the program */
char *nameOfExe; /* Full path of executable. */
const char *zErrlog; /* Log errors to this file, if not NULL */
int isConst; /* True if the output is unchanging & cacheable */
const char *zVfsName; /* The VFS to use for database connections */
sqlite3 *db; /* The connection to the databases */
sqlite3 *dbConfig; /* Separate connection for global_config table */
char *zAuxSchema; /* Main repository aux-schema */
int dbIgnoreErrors; /* Ignore database errors if true */
const char *zConfigDbName;/* Path of the config database. NULL if not open */
sqlite3_int64 now; /* Seconds since 1970 */
int repositoryOpen; /* True if the main repository database is open */
|
| ︙ | ︙ |
Changes to src/style.c.
| ︙ | ︙ | |||
17 18 19 20 21 22 23 | ** ** This file contains code to implement the basic web page look and feel. ** */ #include "VERSION.h" #include "config.h" #include "style.h" | < < < < < < | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | ** ** This file contains code to implement the basic web page look and feel. ** */ #include "VERSION.h" #include "config.h" #include "style.h" /* ** Elements of the submenu are collected into the following ** structure and displayed below the main menu. ** ** Populate these structure with calls to ** |
| ︙ | ︙ | |||
441 442 443 444 445 446 447 |
headerHasBeenGenerated = 1;
sideboxUsed = 0;
if( g.perm.Debug && P("showqp") ){
@ <div class="debug">
cgi_print_all(0, 0);
@ </div>
}
| < < < < < < < | 435 436 437 438 439 440 441 442 443 444 445 446 447 448 |
headerHasBeenGenerated = 1;
sideboxUsed = 0;
if( g.perm.Debug && P("showqp") ){
@ <div class="debug">
cgi_print_all(0, 0);
@ </div>
}
}
#if INTERFACE
/* Allowed parameters for style_adunit() */
#define ADUNIT_OFF 0x0001 /* Do not allow ads on this page */
#define ADUNIT_RIGHT_OK 0x0002 /* Right-side vertical ads ok here */
#endif
|
| ︙ | ︙ |