so true

          心懷未來,開創未來!
          隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
          數據加載中……

          如何修改進程的命令行

          下面這段代碼摘自php/sapi/fpm/fpm/fpm_env.c
          /*
          * This piece of code has been inspirated from nginx and pureftpd code, whic
          * are under BSD licence.
          *
          * To change the process title in Linux we have to set argv[1] to NULL
          * and to copy the title to the same place where the argv[0] points to.
          * However, argv[0] may be too small to hold a new title.  Fortunately, Linux
          * store argv[] and environ[] one after another.  So we should ensure that is
          * the continuous memory and then we allocate the new memory for environ[]
          * and copy it.  After this we could use the memory starting from argv[0] for
          * our process title.
          */
          for (i = 0; i < fpm_globals.argc; i++) {
          if (first == NULL) {
          first = fpm_globals.argv[i];
          }
          if (last == NULL || fpm_globals.argv[i] == last + 1) {
          last = fpm_globals.argv[i] + strlen(fpm_globals.argv[i]);
          }
          }
          if (environ) {
          for (i = 0; environ[i]; i++) {
          if (first == NULL) {
          first = environ[i];
          }
          if (last == NULL || environ[i] == last + 1) {
          last = environ[i] + strlen(environ[i]);
          }
          }
          }
          if (first == NULL || last == NULL) {
          return 0;
          }
          fpm_env_argv_len = last - first;
          fpm_env_argv = fpm_globals.argv;
          if (environ != NULL) {
          char **new_environ;
          unsigned int env_nb = 0U;
          while (environ[env_nb]) {
          env_nb++;
          }
          if ((new_environ = malloc((1U + env_nb) * sizeof (char *))) == NULL) {
          return -1;
          }
          new_environ[env_nb] = NULL;
          while (env_nb > 0U) {
          env_nb--;
          new_environ[env_nb] = strdup(environ[env_nb]);
          }
          environ = new_environ;
          }
          #endif
          #endif
          spprintf(&title, 0, "master process (%s)", fpm_globals.config);
          fpm_env_setproctitle(title); 
          efree(title);

          posted on 2012-12-21 15:18 so true 閱讀(411) 評論(0)  編輯  收藏 所屬分類: C&C++Linux

          主站蜘蛛池模板: 遵义县| 自治县| 云梦县| 肇源县| 武城县| 元氏县| 五莲县| 汶上县| 行唐县| 蒙自县| 独山县| 泾川县| 仁化县| 寻甸| 杂多县| 苏尼特右旗| 宁津县| 黄冈市| 宁强县| 即墨市| 宿州市| 通河县| 志丹县| 密山市| 河池市| 沽源县| 安化县| 哈巴河县| 凤山县| 于田县| 舟曲县| 兴城市| 鱼台县| 许昌县| 阳朔县| 永平县| 潼关县| 临潭县| 博罗县| 乐平市| 定陶县|