Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

プロセス名を書き換える

こんにちわ、情弱です。
村崎百郎が殺されて少し動揺しています。

話は変わって。。。
perlなどは$0でプロセス名を変えたりできて便利ですよね。
pythonではできるの?って話です。

ダメかと思ったが一応できるっぽい。
誰も書いてなさそうなので書いておきます。

PyObject *
set_process_name(PyObject *self, PyObject *args)
{
    int i = 0,argc,len;
    char **argv;
    char *name;

    if (!PyArg_ParseTuple(args, "s:process name", &name)){
        return NULL;
    }

    Py_GetArgcArgv(&argc, &argv);

    for(i = 0;i < argc; i++){
        len = strlen(argv[i]);
        memset(argv[i], 0, len);
    }

    strcpy(*argv, name);
    Py_RETURN_NONE;
}

長さ的にどーなってんのかちゃんと調べてないので気をつけないといけないかも知れません。
(16byteってなんかなかったかな?)
これでpreforkでプロセス名をxxx-master, xxx-workerとかに変えれますね。
とりあえずflaskとか立ち上げてプロセス名を"starman master app.psgi", "starman worker app.psgi"とかにしてperl気分を味わいましょう。