作者brilliantl (brilliant)
看板C_and_CPP
标题[问题] 读取terminal的指令
时间Mon Apr 3 11:28:37 2017
开发平台(Platform): Linux
编译器: codeblocks
问题(Question):
我需要用程式fork一个child process
parent 和child各开启一个terminal
并且让使用者在这两个terminal输入字串
然後用pipe的方式传递两个terminal上的字串
目前我可以成功做到前两行及pipe
但不知道该如何input/output字串在terminal上
有试过请教google大神,但好像因为关键字下不对查不到相关的资料
希望大大能提供我想法,感谢
我真的是新手...
程式码(Code):(请善用置底文网页, 记得排版)
int main(void){
system("gnome-terminal");
pid_t pid=fprk();
if(pid<0){
cout<<"failed to fork";
}else if(pid==0){
//...
}else{
//...
}
return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.169.88.99
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1491190119.A.D76.html
1F:→ tuyutd0505: int main(int argc char *argv[]) 04/03 13:08
2F:→ tuyutd0505: main 的参数是用来接受终端输入的 例如 ./main.out -a 04/03 13:08
3F:→ tuyutd0505: 123456 这样 程式里面就会接收到两个字串 分别是 arg 04/03 13:08
4F:→ tuyutd0505: v[0] = "-a" 以及 argv[1] = "123456" 并且 argc = 2 04/03 13:08
5F:→ tuyutd0505: (参数数量) 04/03 13:08
6F:→ tuyutd0505: 不知道这样有没有帮助到你 04/03 13:08
7F:→ tuyutd0505: 手机推文自动断行了Orz 04/03 13:10
8F:→ tuyutd0505: 抱歉我修正一下 argv[0] 应该会是 "./main.out" 後面 04/03 14:20
9F:→ tuyutd0505: 两个(argv[1&2])依序才是上述 然後 argc 是 3 04/03 14:20
10F:推 jerryh001: 我觉得原po要的是打开後通讯 不是启动参数 04/03 17:50
11F:→ brilliantl: 是的,是j大说的,不过也感谢t大的指教 04/03 18:46
12F:推 hunandy14: 记得是 pip 才可以互传,不过忘记用法了~搜看看 04/04 01:36
13F:→ hunandy14: 两个要是父子,如果是子子,好像要父当中介转发 04/04 01:39
14F:推 x000032001: 或许你需要一个pseudoterminal? 04/04 10:28
15F:推 ronin728: 去找找看 "popen redirect" 的资料,应该会有你要的 04/04 13:00
16F:→ ronin728: "popen stdin stdout process" 之类的也能找找看 04/04 13:09
17F:推 sirusi: 你是要开2个terminal 然後A打字可以传到B上 反之亦然吗? 04/04 21:38
18F:→ sirusi: 要显示在萤幕上的话 可以用dup2()试试看 04/04 21:40
19F:→ brilliantl: S大,你说的没错,但我现在好像卡在无法开两个termina 04/05 19:19
20F:→ brilliantl: l 04/05 19:19
21F:推 sirusi: 开两个terminal可以直接在linux上开 如果是两个terminal要 04/06 15:46
22F:→ sirusi: 沟通 就我知道的方法是简单的client/server程式 04/06 15:46
23F:→ sirusi: 这部分可能要查network/socket programming相关资料 04/06 15:47