- 主题:如何模拟stdin标准输入,Linux系统
就是在程序里通过什么发送个字符,然后getc()之类的函数就能收到
--
FROM 111.198.29.*
getc 读的是 fd 0,你用 dup 折腾几次就可以把 fd 0 变成你自定义的管道,
然后用管道的这一头 write 就可以用 getc 读取到。
【 在 wjhtingerx (ca6140) 的大作中提到: 】
: 就是在程序里通过什么发送个字符,然后getc()之类的函数就能收到
--
FROM 27.38.241.*
就是说stdin也可以写?
【 在 flw 的大作中提到: 】
: getc 读的是 fd 0,你用 dup 折腾几次就可以把 fd 0 变成你自定义的管道,
: 然后用管道的这一头 write 就可以用 getc 读取到。
:
--
FROM 124.64.18.*
stdin 当然不能写了,但你可以搞个 pipe,pipe 你知道吧?就是一头可以写,一头可以读,
这头写进去,那头就可以读出来,这是两个 fd。然后你把读的那头复制到 stdin,然后从写的这一头往里吹气哦不对往里写字符,然后 getc 就可以读出来。
man 2 dup2
man 2 pipe
【 在 wjhtingerx (ca6140) 的大作中提到: 】
: 就是说stdin也可以写?
--
FROM 27.38.241.*
那这需要两个进程了,同一个进程里可不可以?
【 在 flw 的大作中提到: 】
: stdin 当然不能写了,但你可以搞个 pipe,pipe 你知道吧?就是一头可以写,一头可以读,
: 这头写进去,那头就可以读出来,这是两个 fd。然后你把读的那头复制到 stdin,然后从写的这一头往里吹气哦不对往里写字符,然后 getc 就可以读出来。
: man 2 dup2
: ...................
--
FROM 111.198.29.*
跟进程有啥关系?
你还是多看看 APUE 吧,这种概念性的东西你这么问是问不明白的。
【 在 wjhtingerx (ca6140) 的大作中提到: 】
: 那这需要两个进程了,同一个进程里可不可以?
--
FROM 27.38.249.*
关闭文件描述符0
打开文本文件,并将其dup到0上
然后getc就能读到东西了
流程大致如此,并不一定完全准确。
【 在 wjhtingerx 的大作中提到: 】
: 就是在程序里通过什么发送个字符,然后getc()之类的函数就能收到
:
--
FROM 218.68.91.*
【 在 wjhtingerx 的大作中提到: 】
: 就是在程序里通过什么发送个字符,然后getc()之类的函数就能收到
:
prgram <file
--
FROM 123.118.54.*