c - c中的信号和输出

标签 c linux file console signals

前段时间我在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);
    }
}

最佳答案

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

您需要安装信号处理程序。尝试输入 man signal 或谷歌搜索“signal handler linux”。通常,您的信号处理程序应该尽可能少地执行操作,信号处理程序中的许多操作(包括大部分 C 库)都是非法的。在这种情况下,您可以让它设置一个变量,告诉您将输出定向到何处并将其保留在该位置。

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

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

尝试一下,看看是否可以成功。

关于c - c中的信号和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32580873/

相关文章:

c++ - 为什么添加额外的检查循环会在某些机器上产生很大的差异,而在其他机器上却产生很小的差异?

android - 将 android 移植到自定义 arm 设备需要哪些知识/专长?

linux - 启动停止守护进程引用的参数被误解

c - 使用文件输入/输出的游戏,文件中的高分存储和读取问题

java - 如何使用 Java 从 Internet 下载文件

javascript - 在 body 标签中嵌入 Javascript 文件

C - 按值传递结构+成员

python - C 与 C 中 Python 扩展的速度

c - else 之前缺少语句

c - 在 CentOS 上增加管道内部缓冲区大小