nohup C++;fstream 当我在Linuxit下编译下面的C++代码时,我的工作很好,但是当我试着运行< /P> nohup ./a.out &

nohup C++;fstream 当我在Linuxit下编译下面的C++代码时,我的工作很好,但是当我试着运行< /P> nohup ./a.out &,c++,linux,g++,fstream,nohup,C++,Linux,G++,Fstream,Nohup,它立即停止与信息 [7]+ Stopped nohup ./a.out 源代码是: #include <iostream> #include <fstream> using namespace std; int main(void){ ofstream file("hm.txt",ios::out | ios::binary | ios::app); file << "123"; file.cl

它立即停止与信息

[7]+  Stopped                 nohup ./a.out
源代码是:

#include <iostream>
#include <fstream>

using namespace std;

int main(void){

    ofstream file("hm.txt",ios::out | ios::binary | ios::app);
    file << "123";
    file.close();

return 0;
}
#包括
#包括
使用名称空间std;
内部主(空){
流文件(“hm.txt”,ios::out | ios::binary | ios::app);

文件一开始我没有得到它,但您的系统似乎决定将程序置于挂起状态(
Stopped
状态).
作业
显示当前终端会话中已停止或正在运行的所有作业。
bg
/
fg
可用于重新启动已停止的作业,因此您可以检查这是否导致文件被写入。进一步探究原因的另一个方法是运行
/usr/bin/nohup strace./a.out 1>stdout.txt 2>stderr.txt
strace
应该将所有系统调用转储到
stderr.txt
——这样您就可以看到它停止的原因

这类问题的常见原因似乎是程序需要一些输入,并且由于(使用
nohup
)没有终端提供输入,系统会停止您的程序。我的第一个建议是尝试以下操作以提供一些自动生成的输入:

/usr/bin/nohup ./a.out </dev/zero
所以另一条调查路线是:为什么你看不到这个信息


另一种攻击方式是,由于您的系统似乎不喜欢
nohup
&
一起使用,因此,将
停止的
程序作为后台任务重新启动,如下所示:

/usr/bin/nohup ./a.out & bg

显然,
nohup
是用于
&
,所以您的问题有点奇怪。

当我尝试执行时。/a.out一切正常。抱歉,我不够清楚,当使用nohup调用时,它会立即停止,而不创建任何文件。据我所知,它应该打印:
[1]+完成nohup./a.out
。这就是它在我的电脑上的工作方式。我不确定停止的
是从哪里来的。试试
/usr/bin/nohup
。谢谢你的建议,我刚刚试用了以下两个版本,但没有效果:/usr/bin/nohup/home/me/cpp/a.out和/usr/bin/nohup./a.out&
nohup: ignoring input and appending output to `nohup.out'
/usr/bin/nohup ./a.out & bg