概述通过/ dev / pts在另一个terminal执行命令
我有一个terminal使用STDIN 3(/ proc / xxxx / fd / 0 – > / dev / pts / 3)
所以如果(在另一个terminal)我做:
echo \’do_something_command\’ > /dev/pts/3
该命令显示在我的第一个(第3点)terminal,但命令不执行。 如果(在这个terminal的第3点)我正在等待一些来自stdin的数据的程序,数据写在屏幕上,但程序不能从stdin中捕获它。
我想要做的是执行命令“do_something_command”不仅显示它。
在linux中是主动等待常见的
有没有办法使用IAM来pipe理对EC2实例的开发人员访问? (ssh不是ec2 API)
我怎样才能找出在docker运行jetty.base和jetty.home的顺序?
Redis Sentinel用于监控目的? 通知脚本触发了太多次
从variables中删除空格
有人可以向我解释这种行为吗? 当然,如何达到我的目的…
Bash命令行重命名通配符
PHP-FPM,Monit,Ping / status页面,Apache
摆脱“gcc – / usr / bin / ld:warning lib找不到”
C中两个整数的快速双向散列
getline()函数行为奇怪
我完全明白你在问什么。 你可以通过在C中编写和执行一小段代码来实现这一点。 这应该给你一些想法。
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <string.h> #include <unistd.h> voID print_help(char *prog_name) { printf(\”Usage: %s [-n] DEVname COMMANDn\”,prog_name); printf(\”Usage: \’-n\’ is an optional argument if you want to push a new line at the end of the textn\”); printf(\”Usage: Will require \’sudo\’ to run if the executable is not setuID rootn\”); exit(1); } int main (int argc,char *argv[]) { char *cmd,*nl = \”n\”; int i,fd; int devno,commandno,newline; int mem_len; devno = 1; commandno = 2; newline = 0; if (argc < 3) { print_help(argv[0]); } if (argc > 3 && argv[1][0] == \’-\’ && argv[1][1] == \’n\’) { devno = 2; commandno = 3; newline=1; } else if (argc > 3 && argv[1][0] == \’-\’ && argv[1][1] != \’n\’) { printf(\”InvalID Optionn\”); print_help(argv[0]); } fd = open(argv[devno],O_RDWR); if(fd == -1) { perror(\”open DEVICE\”); exit(1); } mem_len = 0; for ( i = commandno; i < argc; i++ ) { mem_len += strlen(argv[i]) + 2; if ( i > commandno ) { cmd = (char *)realloc((voID *)cmd,mem_len); } else { //i == commandno cmd = (char *)malloc(mem_len); } strcat(cmd,argv[i]); strcat(cmd,\” \”); } if (newline == 0) usleep(225000); for (i = 0; cmd[i]; i++) ioctl (fd,TIOCSTI,cmd+i); if (newline == 1) ioctl (fd,nl); close(fd); free((voID *)cmd); exit (0); }
使用sudo权限编译并执行它。 例如,如果你想在/dev/pts/3上执行一个命令,那么简单地做一个sudo ./a.out -n /dev/pts/3 whoami ,在/dev/pts/3上运行一个whoami 。
此代码完全取自此页面 。
你似乎在命令周围使用了错误的引号。 删除引号和echo命令,或者使用echo和back-ticks(`)。
尝试:
echo `date` > /dev/pts/3
要不就
date > /dev/pts/3
请注意,无论在/ dev / pts / 3上运行,都无法读取“从后面”d出的内容。
总结
以上是内存溢出为你收集整理的通过/ dev / pts在另一个terminal执行命令全部内容,希望文章能够帮你解决通过/ dev / pts在另一个terminal执行命令所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容