gparted ( live usb) говорит, что мой раздел смонтирован, но где?

Это работает. Во-первых, установите для SA_SIGINFO значение .sa_flags , чтобы обозначить интерес к дополнительной информации:

#include <signal.h>
#include <unistd.h>
void act(int s, siginfo_t *i, void *v)
{
    //printing from here is unsafe but this is for testing 
    //purposes only
    printf("pid=%d val=%d\n", i->si_pid, i->si_value.sival_int);
}
int main(int argc, char **argv)
{
    struct sigaction sa = { 
        .sa_sigaction=act ,
        .sa_flags = SA_RESTART|SA_SIGINFO
    } ;
    sigaction(SIGUSR1, &sa, NULL);
    printf("%d\n", (int)getpid());
    for(;;){
        pause();
    }

}

Во-вторых, создайте собственное приложение kill (er), способное отправлять такую ​​дополнительную информацию:

#include <signal.h>
#include <unistd.h>

int main(int argc, char**argv)
{
    union sigval val = { .sival_int = atoi(argv[2]) };
    sigqueue((pid_t)atoi(argv[1]), SIGUSR1, val);
}

Вы можете попробовать скомпилировать эти два файла, и вы сможете использовать второй исполняемый файл для отправки целых чисел первому ( ./ second pid int ).

На страницах руководства вы найдете дополнительную информацию о том, как это сделать.

5
10.04.2016, 22:19
0 ответов

Теги

Похожие вопросы