c中的信号和输出
Signal and output in c
前段时间在C:找到这个练习,不改变main函数,让接收到一个SIGUSR1信号输出,直接以append方式添加到一个文件中,作为第一个参数。在接收到另一个 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:找到这个练习,不改变main函数,让接收到一个SIGUSR1信号输出,直接以append方式添加到一个文件中,作为第一个参数。在接收到另一个 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 库。在这种情况下,您可以让它设置一个变量,告诉您将输出定向到哪里并将其保留在那里。
您的主程序需要循环,将字符发送到变量指定的位置。
您可能需要注意的一件事是中断系统调用的信号,需要重试。
试一试,看看能不能成功。