The UNIX and Linux Forums  


Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #3 (permalink)  
Old 06-23-2009
ku@ntum ku@ntum is offline
Registered User
  
 

Join Date: May 2007
Posts: 10
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