Created
April 12, 2015 08:12
-
-
Save RichardBronosky/62a4fc8531a169abb811 to your computer and use it in GitHub Desktop.
Send data to a tty input. Taken from http://unix.stackexchange.com/questions/48103/construct-a-command-by-putting-a-string-into-a-tty/48120#48120
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Mostly ripped off of console-tools' writevt.c | |
*/ | |
#include <stdio.h> | |
#include <fcntl.h> | |
#include <termios.h> | |
#include <sys/ioctl.h> | |
#include <unistd.h> | |
char *progname; | |
static int usage() { | |
printf("Usage: %s ttydev text\n", progname); | |
return 2; | |
} | |
int main(int argc, char **argv) { | |
int fd, argi; | |
char *term = NULL; | |
char *text = NULL; | |
progname = argv[0]; | |
argi = 1; | |
if (argi < argc) | |
term = argv[argi++]; | |
else { | |
fprintf(stderr, "%s: no tty specified\n", progname); | |
return usage(); | |
} | |
if (argi < argc) | |
text = argv[argi++]; | |
else { | |
fprintf(stderr, "%s: no text specified\n", progname); | |
return usage(); | |
} | |
if (argi != argc) { | |
fprintf(stderr, "%s: too many arguments\n", progname); | |
return usage(); | |
} | |
fd = open(term, O_RDONLY); | |
if (fd < 0) { | |
perror(term); | |
fprintf(stderr, "%s: could not open tty\n", progname); | |
return 1; | |
} | |
while (*text) { | |
if (ioctl(fd, TIOCSTI, text)) { | |
perror("ioctl"); | |
return 1; | |
} | |
text++; | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment