Send quit keystroke (Q + Enter) to program after running for a certain period of time
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
add a comment |
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
I wouldn't say that pressingQ
and enter is a common way to quit a program... PressingCtrl+D
is far more common for programs that reads from standard input. A program that catches theTERM
signal would additionally be able to gracefully quit if an unqualifiedkill
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 isgnss-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
add a comment |
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
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
process date signals input
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 pressingQ
and enter is a common way to quit a program... PressingCtrl+D
is far more common for programs that reads from standard input. A program that catches theTERM
signal would additionally be able to gracefully quit if an unqualifiedkill
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 isgnss-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
add a comment |
I wouldn't say that pressingQ
and enter is a common way to quit a program... PressingCtrl+D
is far more common for programs that reads from standard input. A program that catches theTERM
signal would additionally be able to gracefully quit if an unqualifiedkill
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 isgnss-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
add a comment |
2 Answers
2
active
oldest
votes
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).
add a comment |
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>
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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).
add a comment |
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).
add a comment |
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).
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).
answered Mar 10 '18 at 1:13
Gilles
529k12810601586
529k12810601586
add a comment |
add a comment |
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>
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
add a comment |
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>
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
add a comment |
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>
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>
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
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
I wouldn't say that pressing
Q
and enter is a common way to quit a program... PressingCtrl+D
is far more common for programs that reads from standard input. A program that catches theTERM
signal would additionally be able to gracefully quit if an unqualifiedkill
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