nohup C++ fstream
nohup C++ fstream
当我在Linuxit下用g++编译以下C++代码时,效果很好,但当我尝试运行时
nohup ./a.out &
它立即停止信息
[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;
}
你能指出我的错误吗?
起初我没有得到它,但您的系统似乎决定将程序置于挂起状态(Stopped
状态)。jobs
显示当前终端会话中停止或运行的所有作业。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
在我的系统上,它会自动运行这个:
/usr/bin/nohup ./a.out </dev/null
我不知道为什么你的系统不会自动提供空输入,我也不知道你的程序为什么会等待输入。你最初的尝试对我来说效果很好(我无法重现你的问题)。
当我运行nohup ./a.out
(或nohup ./a.out &
)时,我得到以下消息,指示自动输入抑制:
nohup: ignoring input and appending output to `nohup.out'
因此,另一条调查路线是:你为什么没有看到这条消息?
由于您的系统似乎不喜欢nohup
和&
,因此另一种攻击方式是将Stopped
程序作为后台任务重新启动,如下所示:
/usr/bin/nohup ./a.out & bg
很明显,nohup
是要与&
一起使用的,所以您的问题有点奇怪。
相关文章:
- 在fstream期间忽略空行
- 使用fstream对txt文件中的数字进行循环
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 使 std::fstream 写入文件末尾,但从头开始读取
- 为什么当我在 std::string 中打开文件名的 fstream 时出现"no matching function"错误?
- 自定义 std::fstream,std::filebuf 的溢出和下溢函数未为每个字符调用
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- fstream / ifstream / ofstream 对象如何转换为布尔值
- 使用命令的未定义引用<fstream>
- 如何检查文件是否已存在于 fstream C++中
- 如何正确使用 fstream 并在 char 数组中传递数据?
- 如何使用 fstream 的 .get 字符串?
- 使用 fstream 库并在屏幕上打印的文件有问题?
- Windows std::fstream 修改文件后打开()?
- 如何删除文件中的数字,通过 c++ fstream 的
- std::fstream 在 MSVC 和 G++ 上使用 UTF-8 的不同行为
- C++ 错误检查 fstream open() 命令和一般字符串流错误处理
- 在istream_iterator中使用后的 C++ FSTREAM obj 回滚
- 如何使用单个fstream创建、读取和写入文件