Kindly suggest how can I restrict kernel and other utilities that generate logs entries through klogd and syslog to a specific (fixed) virtual terminal.
Since /dev/tty1 will be hosting my application, I can open up /dev/tty2 to have all system wide log entries there. So is there any thing in kernel arguments, and/or in configuration that I can change/make to restrict all kernel output to a specific console.
Also I post this in programming forum, because in my application, I explicitly made the STDOUT(/dev/tty1)
exclusive to my application, and redirect all the output to the /dev/tty2. Here is the code ...
Code:
bool TerminalSetup()
{
bool bRet = false;
if (ioctl(1, TIOCEXCL, 0) != 0)
{
printf("\n -- Error!!\nUnable to put the terminal into exclusive mode.. ");
}
int iFd = 0;
string ref_strRedirTerminal = "/dev/tty2";
if ((iFd = open(ref_strRedirTerminal.c_str(), O_RDWR)) == -1) /* strange ... */
{
fprintf(stderr, "Could not open %s R/W (%s)\n", ref_strRedirTerminal.c_str(), strerror(errno));
fflush(stderr);
return false; /* maybe above user limit? */
}
if (ioctl(iFd, TIOCCONS, 0))
{
fprintf(stderr, "Terminal redirection fails. (%s)\n", strerror(errno));
fflush(stderr);
}
close(iFd);
bRet = true;
return bRet;
}
So what I get in result is that when I redirected an output to /dev/tty1 through
echo as
Code:
echo "Testing ..." > /dev/tty1
the output did redirected to the /dev/tty2 as I made it explicit in my code. But when partition tables are re-synced from fdisk utility, the kernel outputs on the /dev/tty1 (as it was active then).
Hence the above code to make /dev/tty1 exclusive to my process, and redirect all output to /dev/tty2 fails partially.
So any thoughts then.
Kashif