Я пытаюсь отладить приложение пользовательского пространства linux, которое создает группу процессов с setpgid(0,0)
. При запуске на терминале он не возвращает ошибок и работает как положено. Но при отладке с gdb
возвращается EPERM
.
Я подозреваю, что это потому, что GDB присоединяет мой процесс, как ребенок. Поэтому невозможно установить мой процесс как родительский с setpgid(0,0)
. Это верно? Если да, то нет ли способа отладить этот случай с помощью gdb
?
Edit:
Окружающая среда:
Ubuntu 12.04 Kernel 3.11.0-15-generic
Используя простой код ниже, при запуске на терминале я получаю success!!
. Если я отлаживаю с помощью gdb (настроенного на Eclipse Luna), я получаю setpgid: Operation not permitted
.
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int err = setpgid((pid_t)0, (pid_t) 0);
if (err < 0)
perror("setpgid");
else
printf("success!! \n");
exit(err);
}