Windows Error Help
#include <string.h>		// strerror
#include <fcntl.h>		// O_RDWR
	#if defined(CYGWIN_NT) || defined(MINGW) || defined ( Linux ) || defined ( HP_UX ) || defined ( UNIX )
	#include <iostream>		// cout for debugging before release mode.
	using namespace std;		// use cout instead of using std::cout
#elif defined( SunOS) || defined ( AIX )
	#include <iostream.h>		// cout for debugging before release mode at other OS supporting iostream.h (AIX/SunOS).
#else
	#error use iostream/iostream.h based on your OS
#endif
#include <stdlib.h>		// exit
#include <sys/errno.h>		// errno
#include <sys/wait.h>		// wait
#include <sys/stat.h>		// umask
#include <unistd.h>		// fork
#include <sys/signal.h>		// signal system call
int main()
{
        // signal( SIGHUP, SIG_IGN);    // We can include this if we feel to send a signal to running process
                                        // using kill system call to executing process id.
        signal( SIGTSTP, SIG_IGN);   	// Ignore terminal stop signals at background process.
        signal( SIGTERM, SIG_IGN);   	// Do not associate terminal to background process.
        signal( SIGTTIN, SIG_IGN);   	// Ignore terminal input  terminal signals at background process.
        signal( SIGTTOU, SIG_IGN);   	// Ignore terminal output terminal signals at background process.
        close(0);			// Close standard error => using system call
        close(1);			// Close standard input => using system call
        close(2);			// Close standard output => using system call
        signal( SIGCHLD, SIG_IGN);      // Handle removing daemon process before making a fork.
        errno = 0;                      // Reset the errno global variable
        int pid = fork();
        if( 0 != pid )
        {
                exit(0);
        }
        wait(NULL);
        pid = fork();
        /*
 *                              PID     PARENT_PID      PGID    fork_Return     Exit
                PROCESS_01      PID02   PID01           PGID_01 PID01           exit since 0 != pid
                PROCESS_02      PID03   PID02           PGID_02 0
                PROCESS_02 wait for PROCESS_01 to be removed from process table:
                PROCESS_02      PID03   01              01      0
        */
        if( 0 != pid )
        {
                exit(0);
        }
        wait(NULL);
        umask(0); // Reset inherited file creation mask
        setsid(); // run the program using new session.
        // Current Parent process id is 1
        // cout << "PPID: " << getppid() << "\n";
        // Execute checkbattery.sh if bash.exe background program is not running.
        int ret = system( "/usr/bin/ps -ea 2>&1 |\
                /usr/bin/grep -E -v \"ps|grep|^$\" 2>&1 |\
                /usr/bin/grep bash 2>&1 |\
                /usr/bin/grep -w 1 >/dev/null 2>&1;\
                Ret=$?;\
                if [ 0 -ne $Ret ];\
                then\
                        cd ~/;\
                        ./checkbattery.sh >/dev/null 2>&1 & \
                fi;");
        // cout << "System checkbattery.sh " << ret << "\n";
        // putty.cmd having following content to open putty.exe at maximized option.
        // @ECHO OFF
        // START /B /MAX C:\Users\murugesan_openssl\putty.exe [email protected]
        // Start putty.exe after login by checking winlogon.exe at while loop using tasklist.exe.
        ret = system( "while [ 1 ];\
                do\
                        /cygdrive/c/WINDOWS/system32/tasklist.exe 2>&1 | /usr/bin/tr -d \"\\r\" 2>&1 | /usr/bin/grep winlogon.exe >/dev/null 2>&1;\
                        Ret=$?;\
                        if [[ 0 -eq $Ret ]];\
                        then\
                                break;\
                        fi;\
                done;\
                /cygdrive/c/WINDOWS/system32/tasklist.exe 2>&1 |\
                /usr/bin/tr -d \"\r\" 2>&1 |\
                /usr/bin/grep -i putty.exe >/dev/null 2>&1;\
                Ret=$?;\
                if [ 0 -ne $Ret ];\
                then\
                        cd ~/;\
                        ./putty.cmd & \
                fi;");
        cout << "System putty.cmd " << ret << "\n";
        // open firefox.exe
        // cout << "start firefox\n";
        ret = system( "while [ 1 ];\
                do\
                        /usr/bin/ps -ea 2>&1 |\
                        /usr/bin/grep -E -v \"ps|grep|^$\" 2>&1 |\
                        /usr/bin/grep -w 1 >/dev/null 2>&1;\
                        Ret=$?;\
                        if [ 0 -ne $Ret ];\
                        then\
                                /cygdrive/c/WINDOWS/system32/tasklist.exe 2>&1 |\
                                /usr/bin/tr -d \"\r\"  |\
                                /usr/bin/grep -E -v \"^$\" >/dev/null 2>&1;\
                                Ret=$?;\
                        fi;\
                        if [ 0 -eq $Ret ];\
                        then\
                                /cygdrive/c/WINDOWS/system32/tasklist.exe 2>&1 |\
                                /usr/bin/tr -d \"\r\" |\
                                /usr/bin/grep -E -v \"ps|grep|^$\" |\
                                /usr/bin/grep -i firefox >/dev/null 2>&1;\
                                Ret=$?;\
                                if [[ 0 -ne $Ret ]];\
                                then\
                                        cd \"/cygdrive/c/PROGRA~1/MOZILL~1\";\
                                        ./firefox.exe;\
                                fi;\
                                break;\
                        fi;\
                done;");
        // cout << "System firefox.exe " << ret << "\n";
        return 0;
}
/*
$ /usr/bin/make.exe
$ /usr/bin/g++.exe -DCYGWIN_NT -g -Wall startup.cpp -o /cygdrive/c/Users/murugesan_openssl/AppData/Roaming/MICROS~1/Windows/STARTM~1/Programs/Startup/startup.exe
$ #Use  -std=c++11 /... based on your compiler/STL usage.
$ /usr/bin/make
/cygdrive/c/Users/murugesan_openssl/AppData/Roaming/MICROS~1/Windows/STARTM~1/Programs/Startup/startup.exe is up to date
$ /usr/bin/touch.exe startup.cpp
$ echo /usr/bin/g++ -D$(/usr/bin/uname -s | /usr/bin/sed "s/-[0-9].*.[0-9].*-[0-9].*//;") -g -Wall startup.cpp -o /cygdrive/c/Users/murugesan_openssl/AppData/Roaming/MICROS~1/Windows/STARTM~1/Programs/Startup/startup.exe
/usr/bin/g++ -DCYGWIN_NT -g -Wall startup.cpp -o /cygdrive/c/Users/murugesan_openssl/AppData/Roaming/MICROS~1/Windows/STARTM~1/Programs/Startup/startup.exe
$ /usr/bin/g++ -D$(/usr/bin/uname -s | /usr/bin/sed "s/-[0-9].*.[0-9].*-[0-9].*//;s/^\([A-Z][A-Z]\)-\([A-Z][A-Z]\)/\1_\2/;") -g -Wall startup.cpp -o /cygdrive/c/Users/murugesan_openssl/AppData/Roaming/MICROS~1/Windows/STARTM~1/Programs/Startup/startup.exe
$ /usr/bin/make.exe
/cygdrive/c/Users/murugesan_openssl/AppData/Roaming/MICROS~1/Windows/STARTM~1/Programs/Startup/startup.exe is up to date
$ # Logout and relogin.
$ #This program require following files:
$ #a) ~/checkbattery.sh
$ #b) ~/putty.cmd
$ #c) "C:\\\\PROGRA~1\\\\MOZILL~1\\\\firefox.exe" OR /cygdrive/c/PROGRA~1/MOZILL~1/firefox.exe inside bash.exe/mksh.exe/sh.exe/available shells
$ /usr/bin/cat "/home/murugesan_openssl/checkbattery.sh"
#!/bin/bash
#BatteryStatus 1 => Power is off
POWEROFF=1
#BatteryStatus 2 => Power is on
POWERON=2
SLEEPTIME=10
unset -f HANDLETASKMGR
HANDLETASKMGR ()
{
        if [ "" = "$BATTERY_PERCENTAGE_AVAILABLE" ]
        then
                BATTERY_PERCENTAGE_AVAILABLE=$(/cygdrive/c/WINDOWS/System32/Wbem/WMIC.exe Path Win32_Battery Get EstimatedChargeRemaining 2>&1 |\
                /usr/bin/awk '{
                        if ( 2 == NR )
                        {
                                printf( "%d", substr( $1, 1, length( $0) -1 ) );
                        }
                }')
        fi
        if [ $BATTERY_PERCENTAGE_AVAILABLE -le 25 ]
        then
                CURRENTPOWERSTAT=$(/cygdrive/c/WINDOWS/System32/Wbem/WMIC.exe Path Win32_Battery Get BatteryStatus 2>&1 |\
                /usr/bin/awk '{
                        if ( 2 == NR )
                        {
                                printf( "%d", $1);
                        }
                }')
                /cygdrive/c/Windows/System32/wbem/WMIC.exe Path Win32_Battery Get BatteryStatus 2>&1 | /usr/bin/tr -d "\r" | /usr/bin/grep 2 >/dev/null 2>&1
                Ret=$?
                if [ 0 -eq $Ret ]
                then
                        export POWER="ON"
                else
                        export POWER="OFF"
                fi
                if [ $POWEROFF -eq $CURRENTPOWERSTAT ]
                then
                        /cygdrive/c/WINDOWS/system32/taskkill.exe /f /im notepad.exe >/dev/null 2>&1
                        /cygdrive/c/WINDOWS/System32/Wbem/WMIC.exe Path Win32_Battery Get EstimatedChargeRemaining 2>&1 | /usr/bin/tr -d "\r" | /usr/bin/awk '2 == NR { printf( "ADD    POWER PLUG\nBATTERY PERCENTAGE_01 %s%%\nPOWER IS %s", $1, ENVIRON["P
OWER"] ); }' >/home/murugesan_openssl/PowerPercentage.txt
                        /cygdrive/c/WINDOWS/system32/cmd.exe /c "start /max C:\\Windows\\System32\\notepad.exe C:\\Users\\murugesan_openssl\\cygwin_openssl\\home\\murugesan_openssl\\PowerPercentage.txt" >/dev/null 2>&1 &
                        /usr/bin/touch /tmp/TASKMGR.txt
                        SLEEPTIME=10
                else
                        if [ -f /tmp/TASKMGR.txt ]
                        then
                                /usr/bin/rm /tmp/TASKMGR.txt
                        fi
                        /cygdrive/c/WINDOWS/system32/taskkill.exe /f /im notepad.exe >/dev/null 2>&1
                        SLEEPTIME=60
                        return 1
                fi
        elif [ $BATTERY_PERCENTAGE_AVAILABLE -ge 98 ]
        then
                CURRENTPOWERSTAT=$(/cygdrive/c/WINDOWS/System32/Wbem/WMIC.exe Path Win32_Battery Get BatteryStatus 2>&1 |\
                /usr/bin/awk '{
                        if ( 2 == NR )
                        {
                                printf( "%d", $1);
                        }
                }')
                /cygdrive/c/Windows/System32/wbem/WMIC.exe Path Win32_Battery Get BatteryStatus 2>&1 | /usr/bin/tr -d "\r" | /
usr/bin/grep 2 >/dev/null 2>&1
                Ret=$?
                if [ 0 -eq $Ret ]
                then
                        export POWER="ON"
                else
                        export POWER="OFF"
                fi
                if [ $CURRENTPOWERSTAT -eq $POWERON ]
                then
                        /cygdrive/c/WINDOWS/system32/taskkill.exe /f /im notepad.exe >/dev/null 2>&1
                        /cygdrive/c/WINDOWS/System32/Wbem/WMIC.exe Path Win32_Battery Get EstimatedChargeRemaining 2>&1 | /usr
/bin/tr -d "\r" | /usr/bin/awk '2 == NR { printf( "REMOVE POWER PLUG\nBATTERY PERCENTAGE_02 %s%%\nPOWER IS %s", $1, ENVIRON["P
OWER"] ); }' >/home/murugesan_openssl/PowerPercentage.txt
                        /cygdrive/c/WINDOWS/system32/cmd.exe /c "start /max C:\\Windows\\System32\\notepad.exe C:\\Users\\Muru
gesan\\cygwin_openssl\\home\\murugesan_openssl\\PowerPercentage.txt" >/dev/null 2>&1 &
                        /usr/bin/touch /tmp/TASKMGR.txt
                        SLEEPTIME=10
                else
                        if [ -f /tmp/TASKMGR.txt ]
                        then
                                /usr/bin/rm /tmp/TASKMGR.txt
                        fi
                        /cygdrive/c/WINDOWS/system32/taskkill.exe /f /im notepad.exe >/dev/null 2>&1
                        SLEEPTIME=60
                        return 1
                fi
        fi
}
while [ 1 ]
do
        BATTERY_PERCENTAGE_AVAILABLE=$(/cygdrive/c/Windows/System32/wbem/WMIC.exe Path Win32_Battery Get EstimatedChargeRemain
ing 2>&1 |\
        /usr/bin/awk '{
                if ( 2 == NR )
                {
                        printf( "%d", $1);
                }
        }')
        if [ $BATTERY_PERCENTAGE_AVAILABLE -le 25 ]
        then
                CURRENTPOWERSTAT=$(/cygdrive/c/WINDOWS/System32/Wbem/WMIC.exe Path Win32_Battery Get BatteryStatus 2>&1 |\
                /usr/bin/awk '{
                        if ( 2 == NR )
                        {
                                printf( "%d", $1);
                        }
                }')
                if [ $CURRENTPOWERSTAT -eq $POWEROFF ]
                then
                        /cygdrive/c/Windows/System32/wbem/WMIC.exe Path Win32_Battery Get BatteryStatus 2>&1 | /usr/bin/tr -d "\r" | /usr/bin/grep 2 >/dev/null 2>&1
                        Ret=$?
                        if [ 0 -eq $Ret ]
                        then
                                export POWER="ON"
                        else
                                export POWER="OFF"
                        fi
                        /cygdrive/c/WINDOWS/system32/taskkill.exe /f /im notepad.exe >/dev/null 2>&1
                        /cygdrive/c/WINDOWS/System32/Wbem/WMIC.exe Path Win32_Battery Get EstimatedChargeRemaining 2>&1 | /usr
/bin/tr -d "\r" | /usr/bin/awk '2 == NR { printf( "BATTERY PERCENTAGE_03 %s%%\nPOWER IS %s\n", $1, ENVIRON["POWER"] ); }' >/ho
me/murugesan_openssl/PowerPercentage.txt
                        /cygdrive/c/WINDOWS/system32/cmd.exe /c "start /max C:\\Windows\\System32\\notepad.exe C:\\Users\\Muru
gesan\\cygwin_openssl\\home\\murugesan_openssl\\PowerPercentage.txt" >/dev/null 2>&1 &
                        /usr/bin/touch /tmp/TASKMGR.txt
                        SLEEPTIME=10
                else
                        if [ -f /tmp/TASKMGR.txt ]
                        then
                                /usr/bin/rm /tmp/TASKMGR.txt
                        fi
                        /cygdrive/c/WINDOWS/system32/taskkill.exe /f /im notepad.exe >/dev/null 2>&1 &
                        SLEEPTIME=60
                        continue
                fi
        elif [ $BATTERY_PERCENTAGE_AVAILABLE -ge 98 ]
        then
                CURRENTPOWERSTAT=$(/cygdrive/c/WINDOWS/System32/Wbem/WMIC.exe Path Win32_Battery Get BatteryStatus 2>&1 |\
                /usr/bin/awk '{
                        if ( 2 == NR )
                        {
                                printf( "%d", $1);
                        }
                }')
                if [ $CURRENTPOWERSTAT -eq $POWERON ]
                then
                        /cygdrive/c/Windows/System32/wbem/WMIC.exe Path Win32_Battery Get BatteryStatus 2>&1 | /usr/bin/tr -d "\r" | /usr/bin/grep 2 >/dev/null 2>&1
                        Ret=$?
                        if [ 0 -eq $Ret ]
                        then
                                export POWER="ON"
                        else
                                export POWER="OFF"
                        fi
                        /cygdrive/c/WINDOWS/system32/taskkill.exe /f /im notepad.exe >/dev/null 2>&1
                        /cygdrive/c/WINDOWS/System32/Wbem/WMIC.exe Path Win32_Battery Get EstimatedChargeRemaining 2>&1 | /usr
/bin/tr -d "\r" | /usr/bin/awk '2 == NR { printf( "BATTERY PERCENTAGE_04 %s%%\nPOWER IS %s\n", $1, ENVIRON["POWER"] ); }' >/ho
me/murugesan_openssl/PowerPercentage.txt
                        /cygdrive/c/WINDOWS/system32/cmd.exe /c "start /max C:\\Windows\\System32\\notepad.exe C:\\Users\\Muru
gesan\\cygwin_openssl\\home\\murugesan_openssl\\PowerPercentage.txt" >/dev/null 2>&1 &
                        /usr/bin/touch /tmp/TASKMGR.txt
                        SLEEPTIME=10
                else
                        if [ -f /tmp/TASKMGR.txt ]
                        then
                                /usr/bin/rm /tmp/TASKMGR.txt
                        fi
                        /cygdrive/c/WINDOWS/system32/taskkill.exe /f /im notepad.exe >/dev/null 2>&1 &
                        SLEEPTIME=60
                        continue
                fi
        fi
        for ONSECOND in {1..5}
        do
                HANDLETASKMGR
                Ret=$?
                if [ 1 -eq $Ret ]
                then
                        break
                fi
                if [ -d /cygdrive/c/Users/murugesan_openssl/AppData/Local/Adobe ]
                then
                        /usr/bin/rm -rf /cygdrive/c/Users/murugesan_openssl/AppData/Local/Adobe >/dev/null 2>&1 &
                fi
                if [ -f /cygdrive/c/Users/murugesan_openssl/AppData/Local/PUTTY.RND ]
                then
                        /usr/bin/rm -f /cygdrive/c/Users/murugesan_openssl/AppData/Local/PUTTY.RND >/dev/null 2>&1 &
                fi
                /cygdrive/c/Windows/System32/reg.exe query "HKCU\Software\Microsoft\CTF\LangBar" 2>&1 |\
                /usr/bin/tr -d "\r" 2>&1 |\
                /usr/bin/grep "ShowStatus" 2>&1 |\
                /usr/bin/grep "0x4" >/dev/null 2>&1
                Ret=$?
                if [ 0 -ne $Ret ]
                then
                        /cygdrive/c/Windows/System32/reg.exe add "HKCU\Software\Microsoft\CTF\LangBar" /f /v ShowStatus /t REG
_DWORD /d 4 >/dev/null 2>&1
                        echo Yes | /cygdrive/c/Windows/System32/reg.exe add "HKCU\Software\Microsoft\CTF\LangBar" /f /v ShowSt
atus /t REG_DWORD /d 4 >/dev/null 2>&1
                fi
                /usr/bin/sleep $SLEEPTIME
        done
done
$ /usr/bin/cat.exe "/home/murugesan_openssl/Din_Back/putty.cmd"
@ECHO OFF
START /B /MAX C:\Users\murugesan_openssl\cygwin_openssl\home\murugesan_openssl\putty.exe [email protected]
*/