我有以下情况
std::cout<<"--------------------------\n";
std::cout<<argument<<"\n";
std::cout<<"--------------------------\n";
const char *command;
command=argument.c_str();
int status = system(command);
if(status==-1)
{
error_number=-2;
clean_up();
return error_number;
}
/*
calculation();// few ms...
*/
//
const char *command;
command=argument2.c_str();
int status = system(command);
//
第二个命令的shell脚本回显几个字符串。 现在输出而不是预期的A是B。(?!)
A) --------------------------
my_command1.sh var1 var2 var3 // 2 minute wall clock, 20 msec cpu time
--------------------------
********************************************
*** welcome to e_calcsym_ver3.sh
*** Debug mode
********************************************
B) --------------------------
my_command1.sh var1 var2 ********************************************
*** welcome to e_calcsym_ver3.sh
*** Debug mode
********************************************var3
--------------------------
第二种情况发生在我有12个以上的进程并行运行时。 在调试过程中,只运行一个进程,总是我有第一种情况。 有什么想法吗?
答案 0 :(得分:0)
两个进程的输出是混合的,因为在父进程中,您只能写入稍后刷新的缓冲区。使用cout << flush
或使用cout << endl
代替cout << '\n'
,因为endl
会输出换行符并刷新缓冲区。