The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как в С задать название процесса, которое хочу исспользовать"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как в С задать название процесса, которое хочу исспользовать"
Сообщение от Stiki emailИскать по авторуВ закладки on 07-Сен-03, 16:44  (MSK)
Собественно subj. Мне надо моей программулине задать название, под которым она будет запускаться.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Как в С задать название процесса, которое хочу исспользовать"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 08-Сен-03, 12:54  (MSK)
>Собественно subj. Мне надо моей программулине задать название, под которым она будет
>запускаться.


Тебе помочь придумать название программе ? Или что ? :))

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Как в С задать название процесса, которое хочу исспользовать"
Сообщение от David emailИскать по авторуВ закладки on 10-Сен-03, 00:20  (MSK)
>Собественно subj. Мне надо моей программулине задать название, под которым она будет
>запускаться.

Если ты имеешь в виду название процесса, которое выдаётся при ps, то его точно можно изменить. Где-то я раньше про это читал. Уже точно не помню, но возможно через argv[0], но может это и глупость.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Как в С задать название процесса, которое хочу исспользовать"
Сообщение от Stiki emailИскать по авторуВ закладки on 10-Сен-03, 00:24  (MSK)
>Если ты имеешь в виду название процесса, которое выдаётся при ps, то
>его точно можно изменить. Где-то я раньше про это читал. Уже
>точно не помню, но возможно через argv[0], но может это и
>глупость.

Во, ща посмотрю так или не так.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Как в С задать название процесса, которое хочу исспользовать"
Сообщение от Sergey Искать по авторуВ закладки on 11-Сен-03, 19:38  (MSK)
>>Если ты имеешь в виду название процесса, которое выдаётся при ps, то
>>его точно можно изменить. Где-то я раньше про это читал. Уже
>>точно не помню, но возможно через argv[0], но может это и
>>глупость.
>
>Во, ща посмотрю так или не так.


argv[argc-1][strlen(argv[argc-1])] = 1;
/* Tell the kernel - we have new command line */
sprintf(argv[0], "MyNewName");

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Как в С задать название процесса, которое хочу исспользовать"
Сообщение от Макс Зиналь emailИскать по авторуВ закладки on 13-Сен-03, 20:54  (MSK)
>
>argv[argc-1][strlen(argv[argc-1])] = 1;
>/* Tell the kernel - we have new command line */
>sprintf(argv[0], "MyNewName");

Segmentation Fault.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Как в С задать название процесса, которое хочу исспользовать"
Сообщение от SnaiL emailИскать по авторуВ закладки on 14-Сен-03, 01:19  (MSK)
>>
>>argv[argc-1][strlen(argv[argc-1])] = 1;
>>/* Tell the kernel - we have new command line */
>>sprintf(argv[0], "MyNewName");
>
>Segmentation Fault.

Это неправильный код, но идея похожа на правду.
Сначала необходимо сделать vfork() или fork(),
а потом вызвать себя с помощью execve, передав как argv[0] необходимое имя ...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Как в С задать название процесса, которое хочу исспользовать"
Сообщение от qq Искать по авторуВ закладки on 14-Сен-03, 04:12  (MSK)
>Собественно subj. Мне надо моей программулине задать название, под которым она будет
>запускаться.


под freebsd есть ф-ция setproctitle

или можно поюзать вот это (стянуто из сырцов ftpd)

#include <stdio.h>
#include <stdarg.h>

char    **Argv = NULL;          /* pointer to argument vector */
char    *LastArgv = NULL;       /* end of argv */

void setproctitle(const char *fmt, ...)
{
        int i;
        va_list ap;
        char *p, *bp, ch;
        char buf[256];

        va_start(ap,fmt);

        (void)vsnprintf(buf, sizeof(buf), fmt, ap);

        /* make ps print our process name */
        p = Argv[0];

        i = strlen(buf);
        if (i > LastArgv - p - 2) {
                i = LastArgv - p - 2;
                buf[i] = '\0';
        }
        bp = buf;
        while (ch = *bp++)
                if (ch != '\n' && ch != '\r')
                        *p++ = ch;
        while (p < LastArgv)
                *p++ = ' ';
}


int main(int argc,char **argv,char **envp)
{
        /*
*          *  Save start and extent of argv for setproctitle.
*                   */
        Argv = argv;
        while (*envp)
                envp++;
        LastArgv = envp[-1] + strlen(envp[-1]);

setproctitle("new title");

sleep(1000);
    return 0;
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру