1
jemyzhang 2016-07-16 14:01:41 +08:00 via Android
strace
|
2
wbing OP @jemyzhang strace 貌似怎么和 nohup 共用??
我用 strace -cp $(nohup ./MyExe &) 只显示了重定向错误到标准输出,然后就没打印其他了,而我这程序只有在用 nohup ./MyExe & 时才会 cpu 上 100 |
3
gulucn 2016-07-16 14:36:24 +08:00 via Android
strace -p 可以指定进程号。
|
4
wbing OP @gulucn
我 2 楼上面那个命令就是这个, 我先执行 nohup ./MyExe & ,再执行 strace -p MyPID 的话, 就只输出了 “ Process MyPID attached",其他什么都没显示 |
5
redsonic 2016-07-16 15:12:23 +08:00
程序前台执行的时候有很多输出吗?如果有, nohup ./MyExe > /dev/null 再试试,如果这个就 ok 了,回头再看看之前 top 输出的 wa 是不是很高,如果是,检查硬盘是不是满了或硬盘故障。
|
7
9hills 2016-07-16 17:35:55 +08:00 via iPhone
nohup. Xxx </Dev/null
|
8
lean 2016-07-16 18:00:23 +08:00 via Android
nohup ./demo >/dev/null 2>&1 & 遇到过类似的情况,不知这样是否可行
|
9
wbing OP @9hills
你这样也是同样的情况的,还是标准输入一直有个空的进去. @lean 你这是只是把错误输出和标准输出重定向到 /dev/null , 对于标准输入那边还是没作用的 ------------------------------------------------ 我这边有个类似的 demo ``` #include<iostream> #include<string> using namespace std; int main() { string aa; while(true) { cin >> aa; if(aa=="q") break; if(aa=="") cout << "empty" << endl; } return 0; } `` 然后用 nohup 后台跑起来,top 查看该进程,cpu 一个核直接上 100%. 一开始试了下用 select 去处理,但发现一直有输入,所以没作用. 目前我是让其当遇到空输入时,就 sleep 100 毫秒. 就没有这种问题出现了. 不知道还有没更好的解决办法 |