Вам необходимо связать и a.o
, и b.o
:
gcc -o program a.c b.c
Если у вас есть main()
в каждом файле, вы не можете связать их вместе.
Однако ваш файл a.c
содержит ссылку на doSomething()
и предполагает связь с исходным файлом, который определяет doSomething()
и не определяет функции, определенной в a.c
(например, main()
).
Вы не можете вызвать функцию в процессе B из процесса A. Вы не можете отправить сигнал функции; вы отправляете сигналы процессам, используя системный вызов kill()
.
Функция signal()
указывает, какая функция в вашем текущем процессе (программе) будет обрабатывать сигнал, когда ваш процесс получает сигнал.
У вас есть серьезная работа, чтобы понять, как это будет работать - как ProgramA узнает, на какой идентификатор процесса отправить сигнал. Код в b.c
должен вызвать signal()
с dosomething
в качестве обработчика сигнала. Код в a.c
просто отправит сигнал другому процессу.