【问题标题】:Signal and output in cc中的信号和输出
【发布时间】:2015-09-15 08:07:16
【问题描述】:

前段时间我在 C: 中发现了这个练习,在不改变 main 函数的情况下,接收到 SIGUSR1 信号输出被定向并以附加模式作为第一个参数添加到文件中。在接收到另一个 SIGUSR1 时,输出被定向到控制台,依此类推。怎么做这样的练习?

#include <stdio.h>
#include <time.h>
void redirectsetup (char *s){
}
int main (int argc, char *argv[]){
    redirect setup(argv[1]);
    while(1){
       time_t now = time(NULL);
       printf("%s",ctime(&now));
       sleep(1);
    }
}

【问题讨论】:

  • 错字:redirect setup 中的额外空间。而且您没有在代码中调用signalfd(2),所以标题是错误的。因此,请编辑您的问题以改进它。仔细阅读signal(7)

标签: c linux file console signals


【解决方案1】:

我会给你一些一般性的指示。

您需要安装信号处理程序。尝试输入man signal 或谷歌搜索“signal handler linux”。通常,您的信号处理程序应该做尽可能少的事情,包括许多 C 库在内的信号处理程序中的许多事情都是非法的。在这种情况下,您可以让它设置一个变量,告诉您将输出指向何处并将其保留在那里。

您的主程序需要循环,将字符发送到变量告诉它的任何地方。

您可能需要注意的一件事是中断系统调用的信号,需要对其进行重试。

试一试,看看能不能成功。

【讨论】:

    猜你喜欢
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多