我有一个来自C程序的应用程序/二进制文件,默认情况下使用shell从用户那里获取输入。因此,当我使用&
在后台启动应用程序时,它会自动停止,因为我无法访问的实现。当我运行此代码时
iStatus = system("./flute-static -send -a232.0.0.1/6666 a.txt &");
它提供输出[1] 21970
,即pid。
然后,如果我按下另一个输入,它会输出
[1]+ Stopped ./flute-static -send -a232.0.0.1/6666 a.txt
显然它无法发送数据。我该如何解决这个问题。请帮我。提前谢谢。
答案 0 :(得分:1)
您可以尝试nohup
iStatus = system("nohup ./flute-static -send -a232.0.0.1/6666 a.txt &");
Nohup意味着:即使stty被切断,也不要终止此过程。
或者您可以使用screen
答案 1 :(得分:0)
阅读Advanced Linux Programming和fork system call;您肯定希望将fork(2),execve(2),waitpid(2)与其他syscalls(2)和/或daemon(3)和/或popen(3)一起使用。在flute-static
程序中使用strace(1)可能有助于您了解更多信息。
无论你做什么,如果后台进程正在读取标准输入,它就会被停止(参见signal(7),tty(4)等等)!另请阅读tty demystified