我的运行进程使用getchar()
处理标准输入。当我在前台运行它时,它可以正常工作。但是,如果我将其在后台运行并执行echo "a">> /proc/pid/fd/0
,它就无法工作了。在我的系统上,/proc/pid/fd/0
与/proc/pts/0
相同,那么我该如何将数据发送到进程的标准输入,以便getchar()
可以看到它呢?我是通过ssh在C++中工作。
/dev/pts/XX
作为它们的控制终端(和stdin
),但它们不再有资格从中读取 - 只有 shell 或前台任务可以这样做。如果它们这样做,它们将收到停止后台进程的SIGTTIN
信号:myaut@zenbook:~$ cat &
[1] 15250
myaut@zenbook:~$
[1]+ Stopped cat
who am i
时,shell 会读取 who
,后台任务 #1 会读取 am
,而任务 #2 则会读取 i
。mkfifo
)。它们与从stdin
读取一样简单。现代 shell 还提供了协处理器,可以避免使用命名管道。screen
或其他终端模拟器为您的程序创建一个新的伪终端。
>>
改为管道符号|
。 - Neo1989