Estou executando o Arch Linux em um Raspberry Pi 2.
Eu tenho um programa de espaço de usuário que usa a biblioteca wiringPi de Gordon e, em particular, os piHiPri() function que tenta definir a prioridade mais alta para o processo atual (usando sched_setscheduler e SCHED_RR mode).
Esta função precisa de privilégios de superusuário.
O usuário root é o padrão ao instalar o Arch Linux, então criei um usuário chamado builder que adicionei a sudoers graças a visudo .
Meu problema é:
quando executo o programa com o usuário root , a função sched_setscheduler retorna "Operação não permitida" (obtendo a partir de errno ).
Se eu o executar enquanto estiver sendo builder , receberei uma "permissão negada".
No entanto, se eu executar com sudo myProgram sendo builder , está tudo bem e posso ver que a prioridade mudou com o comando top .
Eu pensei que o usuário root pode não ter o UID 0, então eu verifiquei com id -u root , mas isso retorna 0.
ls -l myProgramm dá -rwxr-xr-x 1 root root . Eu também tentei definir SUID com chmod +s myProgramm sem sucesso.
Alguma ideia de como tornar meu programa executável por root?
EDITAR:
Como Gilles aconselhou, executei ulimit -r e ele retornou 0 em todos os casos ( builder e root ).
Alterei uma linha em /etc/security/limits.conf de: * - rtprio 0
Para: * - rtprio 99
Isso afetou a saída de ulimit -r como esperado: ela retorna agora 99.
Tentei novamente executar meu programa com root , mas ainda tenho o mesmo erro Operation not permitted e agora ele não funciona mais com sudo (mesmo Operation not permitted como acima )... estranho !
Durante a investigação, reverti para as configurações antigas de /etc/security/limits.conf .