Aqui está o meu problema - estou tentando escrever um pequeno script wrapper que adiciona um argumento de linha de comando quando o Xorg é chamado (não tenho acesso à fonte do chamador). Parecia bastante simples, mas o problema que estou executando agora é que o chamador está esperando por um USR1
sinal do Xorg. Na página de manual do XSERVER:
SIGUSR1
Este sinal é usado de forma bastante diferente de qualquer um dos acima. Quando o servidor é iniciado, ele verifica se herdou SIGUSR1 como SIG_IGN em vez do SIG_DFL usual. Nesse caso, o servidor envia um SIGUSR1 para seu processo pai depois de configurar os vários esquemas de conexão. O Xdm usa esse recurso para reconhecer quando a conexão com o servidor é possível.
Eu pensei que poderia simplesmente capturar o sinal e encaminhá-lo:
#!/bin/bash
parent_trap(){
echo sending USR1 to $PPID &> /tmp/wrapper.log
kill -USR1 $PPID
}
trap "parent_trap" USR1
Xorg $@ (extra stuff) &
wait
Mas é claro que isso não funciona, pois o próprio script é iniciado pelo chamador ignorando USR1
. ACHO que o que preciso fazer é fazer com que o script pare de ignorar o sinal, mas também de alguma forma inicie o Xorg com USR1
ignorado (para acionar o comportamento da página man.)
Isso é possível no Bash/alguma outra linguagem de script? Por algumas razões, espero evitar uma solução compilada, mas não é impensável. Também é possível que eu esteja pensando completamente sobre isso errado e haja alguma outra maneira de ir USR1
do Xorg para o chamador.