当前位置: 首页 > news >正文

做响应式网站一般都用哪些框架网站建设功能清单

做响应式网站一般都用哪些框架,网站建设功能清单,精准营销推广方案,最近国际新闻热点主流程: 调用fork()函数#xff0c;创建一个子进程#xff0c;然后使父进程退出#xff0c;这样就能保证子进程不再有控制终端。 调用setsid()函数#xff0c;创建一个新的会话期#xff08;session#xff09;#xff0c;并使当前进程成为该会话期的首进程和组长进程创建一个子进程然后使父进程退出这样就能保证子进程不再有控制终端。 调用setsid()函数创建一个新的会话期session并使当前进程成为该会话期的首进程和组长进程这样就能摆脱之前的控制终端、会话期和进程组。 修改工作目录和文件权限掩码确保守护进程不占用任何挂载的文件系统并且对文件的访问权限受到适当的限制。 关闭标准输入、标准输出和标准错误文件描述符以避免在后台运行时受到这些文件描述符的影响。 在Linux系统中确实有一个名为daemon的函数。daemon函数是一个标准的Unix/Linux系统调用用于将当前进程转变为守护进程。 daemon函数的原型如下 #include unistd.h int daemon(int nochdir, int noclose); 其中nochdir和noclose是两个参数用于控制守护进程的行为 如果nochdir设置为0daemon函数会将当前工作目录切换到根目录/如果nochdir设置为非0daemon函数会保持当前工作目录不变。如果noclose设置为0daemon函数会关闭所有的已打开文件描述符除了标准输入、标准输出和标准错误如果noclose设置为非0daemon函数不会关闭任何文件描述符。 daemon函数的返回值为0表示成功返回-1表示失败。 使用daemon函数可以简化将进程转变为守护进程的过程。例如下面的代码演示了如何使用daemon函数创建一个守护进程 #include stdio.h #include stdlib.h #include unistd.hint main() {// 创建守护进程if (daemon(0, 0) -1) {perror(daemon);return -1;}// 在守护进程中执行任务printf(This is a daemon process.\n);sleep(10);printf(Daemon process finished.\n);return 0; } 上述代码中调用daemon(0, 0)函数将当前进程转变为守护进程。在守护进程中可以执行需要在后台运行的任务。在示例中守护进程会打印一条消息然后睡眠10秒最后打印另一条消息。 需要注意的是daemon函数仅适用于Unix/Linux系统不适用于所有操作系统。在其他操作系统上实现守护进程可能需要使用不同的方法和函数。 源码是https://github.com/lattera/glibc/blob/master/misc/daemon.c int daemon (int nochdir, int noclose) {int fd;switch (__fork()) {case -1:return (-1);case 0:break;default:_exit(0);}if (__setsid() -1)return (-1);if (!nochdir)(void)__chdir(/);if (!noclose) {struct stat64 st;if ((fd __open_nocancel(_PATH_DEVNULL, O_RDWR, 0)) ! -1 (__builtin_expect (__fxstat64 (_STAT_VER, fd, st), 0) 0)) {if (__builtin_expect (S_ISCHR (st.st_mode), 1) ! 0 #if defined DEV_NULL_MAJOR defined DEV_NULL_MINOR (st.st_rdev makedev (DEV_NULL_MAJOR, DEV_NULL_MINOR)) #endif) {(void)__dup2(fd, STDIN_FILENO);(void)__dup2(fd, STDOUT_FILENO);(void)__dup2(fd, STDERR_FILENO);if (fd 2)(void)__close (fd);} else {/* We must set an errno value since nofunction call actually failed. */__close_nocancel_nostatus (fd);__set_errno (ENODEV);return -1;}} else {__close_nocancel_nostatus (fd);return -1;}}return (0); } nginx 的实现方式 ngx_int_t ngx_daemon(ngx_log_t *log) {int fd;switch (fork()) {case -1:ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, fork() failed);return NGX_ERROR;case 0:break;default:exit(0);}ngx_parent ngx_pid;ngx_pid ngx_getpid();if (setsid() -1) {ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, setsid() failed);return NGX_ERROR;}umask(0);fd open(/dev/null, O_RDWR);if (fd -1) {ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,open(\/dev/null\) failed);return NGX_ERROR;}if (dup2(fd, STDIN_FILENO) -1) {ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, dup2(STDIN) failed);return NGX_ERROR;}if (dup2(fd, STDOUT_FILENO) -1) {ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, dup2(STDOUT) failed);return NGX_ERROR;}#if 0if (dup2(fd, STDERR_FILENO) -1) {ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, dup2(STDERR) failed);return NGX_ERROR;} #endifif (fd STDERR_FILENO) {if (close(fd) -1) {ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, close() failed);return NGX_ERROR;}}return NGX_OK; }
http://www.pierceye.com/news/151233/

相关文章:

  • 漳州市建设局网站6热e国产-网站正在建设中-手机版
  • 给公司做网站数据分析江门网站设计制作
  • 怎么做新网站安宁网站建设熊掌号
  • com是什么网站网络科技公司可以去吗
  • 抖音创作者服务平台上海seo培训中心
  • 自己做网站app甘肃网站域名申请公司
  • 电子商务网站开发的课程介绍2023年新闻摘抄
  • 合肥如何做百度的网站推广百度知道官网首页登录入口
  • 织梦网站怎么做二级域名广州做网站费用
  • 湖南的商城网站建设网站建设与管理专业就业
  • 诸城企业网站建设wordpress经典编辑器插件
  • 做视频播放网站 赚钱全国建筑网站
  • 网站建站要多少钱2021安全员证报名入口
  • 成都建设网站那家好vs2019可以做网站吗
  • 个人网站开发教程济南高新网站制作
  • 中国空间站最新进展欧泰国际物流网站
  • 做淘宝链接网站成都网站建设 3e网络
  • 兰州中川国际机场t3航站楼vue单页面做网站加载慢
  • 公司网站制作费用申请泸州网站建设公司
  • 专业网络优化有名的seo外包公司
  • 宿迁网站建设制作湖南常德邮编
  • 网站制作方案电子商务网站建设与维护的主要内容
  • 网站淘宝客怎么做的建网站前途
  • 宁波网站开发服务网页制作技巧
  • 中医网站风格网络规划设计师2022论文5月
  • 网站主办者单位有效证件电子件是什么怎么做免费的产品网站
  • 设计素材网站好融资吗网站设计需要需要用
  • 北京品牌营销的服务机构sem和seo有什么区别
  • 注册企业网站上海人才中心档案托管
  • 建设银行的网站为什么登不上公司员工培训方案