LINUX.ORG.RU

Operation not permitted


0

1

В каких случаях setpgid() дает ошибку в заголовке? Когда переносим чайлда в другую группу?



Последнее исправление: iwsyhgia (всего исправлений: 1)

Ты рассчитываешь на телепатов?

router ★★★★★
()

Что?

RETURN VALUE
       On success, setpgid() and setpgrp() return zero.  On error, -1 is returned, and errno is set appropriately.

       The POSIX.1 getpgrp() always returns the PGID of the caller.

       getpgid(),  and the BSD-specific getpgrp() return a process group on success.  On error, -1 is returned, and errno is
       set appropriately.
ziemin ★★
()

ладно, последняя попытка.

man setpgid:

       EPERM  The process indicated by the pid argument is a session leader.

       EPERM  The value of the pid argument matches the process ID of a child process of the calling process and the child process is  not  in  the
              same session as the calling process.

       EPERM  The  value  of the pgid argument is valid but does not match the process ID of the process indicated by the pid argument and there is
              no process with a process group ID that matches the value of the pgid argument in the same session as the calling process.

если бы ты по-нормальному обьяснил что тебе непонятно, а еще лучше что именно ты пытаешься сделать, тебе бы уже давно помогли.

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

три последние темы

Да что там три. У него вообще нет комментариев o_O. Человек приходит, вбрасывает вопрос и уходит.

i-rinat ★★★★★
()
Ответ на: комментарий от val-amart

Есть дерево процессов.

  • 1
    • 2
    • 3
    • 4
    • 5
      • 6
      • 7
      • 8

Мне требуется послать по 30 сигналов usr1 каждому из процессов. Для этого я объединяю в группу процессы 2-5 и 6-8. После начинаю отсылать сигналы. Цикл отсылки сигналов происходит следующим образом 1->(2,3,4,5) 5->(6, 7, 8) 8->1. Далее мне требуется завершить процессы 1-8 сигналом term(все пиды процессов на руках), для этого мне нужно их объединить в группу. Процессы 1-5 удается поместить в группу, а 6-8 нет. Объединение в группу 6-8 пр. произвожу из обработчика сигнала 5 пр. кодом ниже.

if (setpgid(pid[8], pid[1])) perror("8"); //pid[1] соответственно номер пида 1 процесса
if (setpgid(pid[7], pid[1])) perror("7");
if (setpgid(pid[6], pid[1])) perror("6");
На что получаю ответ:
8: Operation not permitted
7: Operation not permitted
6: Operation not permitted

На всякий случай откомментированный исходный код -> http://pastebin.com/WMdjBQaU

iwsyhgia
() автор топика
Ответ на: комментарий от iwsyhgia

Мне требуется послать по 30 сигналов usr1 каждому из процессов. Для этого я объединяю в группу процессы 2-5 и 6-8.

Пометь тему как решённую. А учитывая, что такой специфический вопрос линуксоиды решают редко, напиши где это такой урожай грибов?

ziemin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.