Send quit keystroke (Q + Enter) to program after running for a certain period of time












0














Some terminal programs have a quit keystroke to safely stop their execution, for example:



Q+Enter



From this question I learned that the timeout command allows to send signals to a program after a specified amount of time but, as far as I know, none of those signals is equivalent to the quit keystroke that I am referring to.



The list of signals can be shown with the command kill -l:



 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX


I would like to send the quit keystroke (echo the letter q) to a program after a certain period of time in order to stop a program safely.



How can I do it?










share|improve this question
























  • I wouldn't say that pressing Q and enter is a common way to quit a program... Pressing Ctrl+D is far more common for programs that reads from standard input. A program that catches the TERM signal would additionally be able to gracefully quit if an unqualified kill was done on its PID. What is the program you want to do this for?
    – Kusalananda
    Mar 9 '18 at 17:32










  • @Kusalananda The program is gnss-sdr
    – codeaviator
    Mar 9 '18 at 17:35








  • 1




    How do you run the program? Is it a daemon that starts at boot? Do you interact with the program after starting it and before the timeout? Is it an idle timeout or a pure "after X minutes, end the program"?
    – Jeff Schaller
    Mar 9 '18 at 18:37






  • 1




    simplistic example for the simplistic case: (sleep 5; echo q) | cat
    – Jeff Schaller
    Mar 9 '18 at 19:06










  • It looks like it communicates via SysV message queues so you could also craft a program that queues up a stop message (assuming you know the queueid) - github.com/gnss-sdr/gnss-sdr/blob/… ...
    – Anon
    Dec 23 '18 at 18:11
















0














Some terminal programs have a quit keystroke to safely stop their execution, for example:



Q+Enter



From this question I learned that the timeout command allows to send signals to a program after a specified amount of time but, as far as I know, none of those signals is equivalent to the quit keystroke that I am referring to.



The list of signals can be shown with the command kill -l:



 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX


I would like to send the quit keystroke (echo the letter q) to a program after a certain period of time in order to stop a program safely.



How can I do it?










share|improve this question
























  • I wouldn't say that pressing Q and enter is a common way to quit a program... Pressing Ctrl+D is far more common for programs that reads from standard input. A program that catches the TERM signal would additionally be able to gracefully quit if an unqualified kill was done on its PID. What is the program you want to do this for?
    – Kusalananda
    Mar 9 '18 at 17:32










  • @Kusalananda The program is gnss-sdr
    – codeaviator
    Mar 9 '18 at 17:35








  • 1




    How do you run the program? Is it a daemon that starts at boot? Do you interact with the program after starting it and before the timeout? Is it an idle timeout or a pure "after X minutes, end the program"?
    – Jeff Schaller
    Mar 9 '18 at 18:37






  • 1




    simplistic example for the simplistic case: (sleep 5; echo q) | cat
    – Jeff Schaller
    Mar 9 '18 at 19:06










  • It looks like it communicates via SysV message queues so you could also craft a program that queues up a stop message (assuming you know the queueid) - github.com/gnss-sdr/gnss-sdr/blob/… ...
    – Anon
    Dec 23 '18 at 18:11














0












0








0







Some terminal programs have a quit keystroke to safely stop their execution, for example:



Q+Enter



From this question I learned that the timeout command allows to send signals to a program after a specified amount of time but, as far as I know, none of those signals is equivalent to the quit keystroke that I am referring to.



The list of signals can be shown with the command kill -l:



 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX


I would like to send the quit keystroke (echo the letter q) to a program after a certain period of time in order to stop a program safely.



How can I do it?










share|improve this question















Some terminal programs have a quit keystroke to safely stop their execution, for example:



Q+Enter



From this question I learned that the timeout command allows to send signals to a program after a specified amount of time but, as far as I know, none of those signals is equivalent to the quit keystroke that I am referring to.



The list of signals can be shown with the command kill -l:



 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX


I would like to send the quit keystroke (echo the letter q) to a program after a certain period of time in order to stop a program safely.



How can I do it?







process date signals input






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 9 '18 at 18:39









Jeff Schaller

39k1053125




39k1053125










asked Mar 9 '18 at 17:20









codeaviator

1046




1046












  • I wouldn't say that pressing Q and enter is a common way to quit a program... Pressing Ctrl+D is far more common for programs that reads from standard input. A program that catches the TERM signal would additionally be able to gracefully quit if an unqualified kill was done on its PID. What is the program you want to do this for?
    – Kusalananda
    Mar 9 '18 at 17:32










  • @Kusalananda The program is gnss-sdr
    – codeaviator
    Mar 9 '18 at 17:35








  • 1




    How do you run the program? Is it a daemon that starts at boot? Do you interact with the program after starting it and before the timeout? Is it an idle timeout or a pure "after X minutes, end the program"?
    – Jeff Schaller
    Mar 9 '18 at 18:37






  • 1




    simplistic example for the simplistic case: (sleep 5; echo q) | cat
    – Jeff Schaller
    Mar 9 '18 at 19:06










  • It looks like it communicates via SysV message queues so you could also craft a program that queues up a stop message (assuming you know the queueid) - github.com/gnss-sdr/gnss-sdr/blob/… ...
    – Anon
    Dec 23 '18 at 18:11


















  • I wouldn't say that pressing Q and enter is a common way to quit a program... Pressing Ctrl+D is far more common for programs that reads from standard input. A program that catches the TERM signal would additionally be able to gracefully quit if an unqualified kill was done on its PID. What is the program you want to do this for?
    – Kusalananda
    Mar 9 '18 at 17:32










  • @Kusalananda The program is gnss-sdr
    – codeaviator
    Mar 9 '18 at 17:35








  • 1




    How do you run the program? Is it a daemon that starts at boot? Do you interact with the program after starting it and before the timeout? Is it an idle timeout or a pure "after X minutes, end the program"?
    – Jeff Schaller
    Mar 9 '18 at 18:37






  • 1




    simplistic example for the simplistic case: (sleep 5; echo q) | cat
    – Jeff Schaller
    Mar 9 '18 at 19:06










  • It looks like it communicates via SysV message queues so you could also craft a program that queues up a stop message (assuming you know the queueid) - github.com/gnss-sdr/gnss-sdr/blob/… ...
    – Anon
    Dec 23 '18 at 18:11
















I wouldn't say that pressing Q and enter is a common way to quit a program... Pressing Ctrl+D is far more common for programs that reads from standard input. A program that catches the TERM signal would additionally be able to gracefully quit if an unqualified kill was done on its PID. What is the program you want to do this for?
– Kusalananda
Mar 9 '18 at 17:32




I wouldn't say that pressing Q and enter is a common way to quit a program... Pressing Ctrl+D is far more common for programs that reads from standard input. A program that catches the TERM signal would additionally be able to gracefully quit if an unqualified kill was done on its PID. What is the program you want to do this for?
– Kusalananda
Mar 9 '18 at 17:32












@Kusalananda The program is gnss-sdr
– codeaviator
Mar 9 '18 at 17:35






@Kusalananda The program is gnss-sdr
– codeaviator
Mar 9 '18 at 17:35






1




1




How do you run the program? Is it a daemon that starts at boot? Do you interact with the program after starting it and before the timeout? Is it an idle timeout or a pure "after X minutes, end the program"?
– Jeff Schaller
Mar 9 '18 at 18:37




How do you run the program? Is it a daemon that starts at boot? Do you interact with the program after starting it and before the timeout? Is it an idle timeout or a pure "after X minutes, end the program"?
– Jeff Schaller
Mar 9 '18 at 18:37




1




1




simplistic example for the simplistic case: (sleep 5; echo q) | cat
– Jeff Schaller
Mar 9 '18 at 19:06




simplistic example for the simplistic case: (sleep 5; echo q) | cat
– Jeff Schaller
Mar 9 '18 at 19:06












It looks like it communicates via SysV message queues so you could also craft a program that queues up a stop message (assuming you know the queueid) - github.com/gnss-sdr/gnss-sdr/blob/… ...
– Anon
Dec 23 '18 at 18:11




It looks like it communicates via SysV message queues so you could also craft a program that queues up a stop message (assuming you know the queueid) - github.com/gnss-sdr/gnss-sdr/blob/… ...
– Anon
Dec 23 '18 at 18:11










2 Answers
2






active

oldest

votes


















3














Pressing a key and a signal are two different ways to communicate with a program. If there's a signal that's equivalent to a key press for a given program, that's because the author of the program designed it that way.



There are a few keys that the terminal itself translates into a signal, such as Ctrl+C to SIGINT. The program can change the terminal settings to capture those keystrokes itself rather than let the terminal translate them to a signal. The same terminal mechanism allows a key (normally Ctrl+D) to be translated to the end of input (only when it's pressed at the beginning of a line). This is not a signal: it means that the program receives an end-of-file indication when it tries to read input from the terminal.



When a terminal disappears, the kernel sends the signal SIGHUP to the foreground program running in the terminal, if any (and if it's a shell, the shell will re-send the signal to its foreground job). HUP comes from “(modem) hang-up”, and in the modern world applies in cases such as closing a terminal window in a GUI. Many programs catch this signal and shut down safely, so if it's more convenient for you to send a signal than to send input, you should try if this works for your program.



If you must send input, the easiest way is to run the program in Screen and to use screen -X to send input to the screen sesssion (example).






share|improve this answer





























    0














    You can use $ consumer << DOCUMENT input in bash. If you want it with a nice delay, you might need to read (and analyze) the commands entered on line before piping them to your program.



    analyze <<END
    <your timed command>





    share|improve this answer





















    • I don't think heredoc is the right away to approach this issue given that it needs the keystorkes to be sent after a given time rather than piped in right away. Using a subshell pipe will probably yield results closer to what is wanted. A more extreme approach would be to use something like expect ...
      – Anon
      Dec 23 '18 at 18:02










    • I've meant analyze is a function that reads in the commands in the heredoc. Then these commands (in whatever syntax) are analyzed for the time component on that line. The output of that reading function can be piped into the command in question.
      – Michael Grieswald
      Dec 23 '18 at 18:07











    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "106"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f429301%2fsend-quit-keystroke-q-enter-to-program-after-running-for-a-certain-period-of%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    Pressing a key and a signal are two different ways to communicate with a program. If there's a signal that's equivalent to a key press for a given program, that's because the author of the program designed it that way.



    There are a few keys that the terminal itself translates into a signal, such as Ctrl+C to SIGINT. The program can change the terminal settings to capture those keystrokes itself rather than let the terminal translate them to a signal. The same terminal mechanism allows a key (normally Ctrl+D) to be translated to the end of input (only when it's pressed at the beginning of a line). This is not a signal: it means that the program receives an end-of-file indication when it tries to read input from the terminal.



    When a terminal disappears, the kernel sends the signal SIGHUP to the foreground program running in the terminal, if any (and if it's a shell, the shell will re-send the signal to its foreground job). HUP comes from “(modem) hang-up”, and in the modern world applies in cases such as closing a terminal window in a GUI. Many programs catch this signal and shut down safely, so if it's more convenient for you to send a signal than to send input, you should try if this works for your program.



    If you must send input, the easiest way is to run the program in Screen and to use screen -X to send input to the screen sesssion (example).






    share|improve this answer


























      3














      Pressing a key and a signal are two different ways to communicate with a program. If there's a signal that's equivalent to a key press for a given program, that's because the author of the program designed it that way.



      There are a few keys that the terminal itself translates into a signal, such as Ctrl+C to SIGINT. The program can change the terminal settings to capture those keystrokes itself rather than let the terminal translate them to a signal. The same terminal mechanism allows a key (normally Ctrl+D) to be translated to the end of input (only when it's pressed at the beginning of a line). This is not a signal: it means that the program receives an end-of-file indication when it tries to read input from the terminal.



      When a terminal disappears, the kernel sends the signal SIGHUP to the foreground program running in the terminal, if any (and if it's a shell, the shell will re-send the signal to its foreground job). HUP comes from “(modem) hang-up”, and in the modern world applies in cases such as closing a terminal window in a GUI. Many programs catch this signal and shut down safely, so if it's more convenient for you to send a signal than to send input, you should try if this works for your program.



      If you must send input, the easiest way is to run the program in Screen and to use screen -X to send input to the screen sesssion (example).






      share|improve this answer
























        3












        3








        3






        Pressing a key and a signal are two different ways to communicate with a program. If there's a signal that's equivalent to a key press for a given program, that's because the author of the program designed it that way.



        There are a few keys that the terminal itself translates into a signal, such as Ctrl+C to SIGINT. The program can change the terminal settings to capture those keystrokes itself rather than let the terminal translate them to a signal. The same terminal mechanism allows a key (normally Ctrl+D) to be translated to the end of input (only when it's pressed at the beginning of a line). This is not a signal: it means that the program receives an end-of-file indication when it tries to read input from the terminal.



        When a terminal disappears, the kernel sends the signal SIGHUP to the foreground program running in the terminal, if any (and if it's a shell, the shell will re-send the signal to its foreground job). HUP comes from “(modem) hang-up”, and in the modern world applies in cases such as closing a terminal window in a GUI. Many programs catch this signal and shut down safely, so if it's more convenient for you to send a signal than to send input, you should try if this works for your program.



        If you must send input, the easiest way is to run the program in Screen and to use screen -X to send input to the screen sesssion (example).






        share|improve this answer












        Pressing a key and a signal are two different ways to communicate with a program. If there's a signal that's equivalent to a key press for a given program, that's because the author of the program designed it that way.



        There are a few keys that the terminal itself translates into a signal, such as Ctrl+C to SIGINT. The program can change the terminal settings to capture those keystrokes itself rather than let the terminal translate them to a signal. The same terminal mechanism allows a key (normally Ctrl+D) to be translated to the end of input (only when it's pressed at the beginning of a line). This is not a signal: it means that the program receives an end-of-file indication when it tries to read input from the terminal.



        When a terminal disappears, the kernel sends the signal SIGHUP to the foreground program running in the terminal, if any (and if it's a shell, the shell will re-send the signal to its foreground job). HUP comes from “(modem) hang-up”, and in the modern world applies in cases such as closing a terminal window in a GUI. Many programs catch this signal and shut down safely, so if it's more convenient for you to send a signal than to send input, you should try if this works for your program.



        If you must send input, the easiest way is to run the program in Screen and to use screen -X to send input to the screen sesssion (example).







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 10 '18 at 1:13









        Gilles

        529k12810601586




        529k12810601586

























            0














            You can use $ consumer << DOCUMENT input in bash. If you want it with a nice delay, you might need to read (and analyze) the commands entered on line before piping them to your program.



            analyze <<END
            <your timed command>





            share|improve this answer





















            • I don't think heredoc is the right away to approach this issue given that it needs the keystorkes to be sent after a given time rather than piped in right away. Using a subshell pipe will probably yield results closer to what is wanted. A more extreme approach would be to use something like expect ...
              – Anon
              Dec 23 '18 at 18:02










            • I've meant analyze is a function that reads in the commands in the heredoc. Then these commands (in whatever syntax) are analyzed for the time component on that line. The output of that reading function can be piped into the command in question.
              – Michael Grieswald
              Dec 23 '18 at 18:07
















            0














            You can use $ consumer << DOCUMENT input in bash. If you want it with a nice delay, you might need to read (and analyze) the commands entered on line before piping them to your program.



            analyze <<END
            <your timed command>





            share|improve this answer





















            • I don't think heredoc is the right away to approach this issue given that it needs the keystorkes to be sent after a given time rather than piped in right away. Using a subshell pipe will probably yield results closer to what is wanted. A more extreme approach would be to use something like expect ...
              – Anon
              Dec 23 '18 at 18:02










            • I've meant analyze is a function that reads in the commands in the heredoc. Then these commands (in whatever syntax) are analyzed for the time component on that line. The output of that reading function can be piped into the command in question.
              – Michael Grieswald
              Dec 23 '18 at 18:07














            0












            0








            0






            You can use $ consumer << DOCUMENT input in bash. If you want it with a nice delay, you might need to read (and analyze) the commands entered on line before piping them to your program.



            analyze <<END
            <your timed command>





            share|improve this answer












            You can use $ consumer << DOCUMENT input in bash. If you want it with a nice delay, you might need to read (and analyze) the commands entered on line before piping them to your program.



            analyze <<END
            <your timed command>






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Dec 23 '18 at 15:57









            Michael Grieswald

            11




            11












            • I don't think heredoc is the right away to approach this issue given that it needs the keystorkes to be sent after a given time rather than piped in right away. Using a subshell pipe will probably yield results closer to what is wanted. A more extreme approach would be to use something like expect ...
              – Anon
              Dec 23 '18 at 18:02










            • I've meant analyze is a function that reads in the commands in the heredoc. Then these commands (in whatever syntax) are analyzed for the time component on that line. The output of that reading function can be piped into the command in question.
              – Michael Grieswald
              Dec 23 '18 at 18:07


















            • I don't think heredoc is the right away to approach this issue given that it needs the keystorkes to be sent after a given time rather than piped in right away. Using a subshell pipe will probably yield results closer to what is wanted. A more extreme approach would be to use something like expect ...
              – Anon
              Dec 23 '18 at 18:02










            • I've meant analyze is a function that reads in the commands in the heredoc. Then these commands (in whatever syntax) are analyzed for the time component on that line. The output of that reading function can be piped into the command in question.
              – Michael Grieswald
              Dec 23 '18 at 18:07
















            I don't think heredoc is the right away to approach this issue given that it needs the keystorkes to be sent after a given time rather than piped in right away. Using a subshell pipe will probably yield results closer to what is wanted. A more extreme approach would be to use something like expect ...
            – Anon
            Dec 23 '18 at 18:02




            I don't think heredoc is the right away to approach this issue given that it needs the keystorkes to be sent after a given time rather than piped in right away. Using a subshell pipe will probably yield results closer to what is wanted. A more extreme approach would be to use something like expect ...
            – Anon
            Dec 23 '18 at 18:02












            I've meant analyze is a function that reads in the commands in the heredoc. Then these commands (in whatever syntax) are analyzed for the time component on that line. The output of that reading function can be piped into the command in question.
            – Michael Grieswald
            Dec 23 '18 at 18:07




            I've meant analyze is a function that reads in the commands in the heredoc. Then these commands (in whatever syntax) are analyzed for the time component on that line. The output of that reading function can be piped into the command in question.
            – Michael Grieswald
            Dec 23 '18 at 18:07


















            draft saved

            draft discarded




















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f429301%2fsend-quit-keystroke-q-enter-to-program-after-running-for-a-certain-period-of%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Morgemoulin

            Scott Moir

            Souastre