信号和输出c

时间:2015-09-15 08:07:16

标签: c linux file console signals

前段时间我在C中发现了这个练习:不改变主函数,因此接收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);
    }
}

1 个答案:

答案 0 :(得分:0)

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

您需要安装信号处理程序。尝试输入man signal或googling“signal handler linux”。通常,您的信号处理程序应该尽可能少地执行,许多事情在信号处理程序中是非法的,包括大部分C库。在这种情况下,你可以让它设置一个变量,告诉你在哪里直接输出并保留它。

您的主程序需要循环,将字符发送到变量告诉它的位置。

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

去看看你是否能让它发挥作用。