<分区>
我有两个不同的应用程序。我必须从 application_2 通知 application_1 application_1 必须执行一些操作。(应该调用一个函数)。
- 我可以在 application_2 的文本文件中写入一些消息“take_action”,application_1 会定期检查该文本文件中的“take_action”。在获取“take_action”后,它将调用相应的函数并将“action_taken”写入文本文件。
- 我可以使用管道或共享内存来代替文件。
- 我可以通过终止命令 (kill -SIGHUP) 传递来自 application_2 的信号,并在 SIGHUP 信号到达 application_1 时调用所需的函数。
方法一和方法三的示例代码如下。
方法_1:
在 application_2 中:
fprintf(fp, "take_action");
在 application_1 中:
int rd = read(filedReading, lineText, 13);
if (strcmp(lineText, "take_action") == 0)
{
reloadRule(); //calling required function
}
方法_3:
在 application_2 中:
system("kill -SIGHUP");
在 application_1 中:
void sig_handler(int signo)
{
switch(signo) {
case SIGUSR1:
opt_debug = opt_debug ? 0 : 1;
break;
case SIGHUP:
log_msg(LOG_NOTICE, "SIGHUP SIGNAL RECEIVED");
reloadRule(); //calling required function
default:
cleanexit(0);
}
哪种方法最适合解决此类问题?