我有一個程序,其中的一部分應該顯示每5秒的正常運行時間,但現在它只顯示一次,而不是告訴程序退出。爲什麼這個子進程只進行一次,而不是去程序退出的父進程?C++顯示正常運行時間
- 下午4:10了171天(S),8:03,13個用戶,平均負載:0.89,1.29,1.46
- 程序退出現在
- >時間是16:10:10
- 定時器0:10
- 時間是16點10分11秒
- 定時器0:9
- 時間是16時10分12秒
- 定時器0:8
- 時間是16點10分十三秒
- 定時器0:7
- 時間是16時10分14秒
- 定時器0:6
- 時間是16點10分15秒
- 定時器0:5
- 時間是16點10分16秒
- 定時器0:4
- 時間是十六時10分17秒
- 定時器0:3
- 定時器0:2
- 時間是16時10分18秒
- 定時器0:1
- 時間是十六點10分19秒
我的代碼是這樣的:
#include "time.h"
void showClock(){
time_t timeNow;
struct tm *locTime;
while(Timer>0){
timeNow=time(NULL);
locTime=localtime(&timeNow);
cout<<"Time is "<<locTime->tm_hour<<":"<<locTime->tm_min<<":"<<locTime->tm_sec<<"\n";
Timer--;
sleep(1);
}
exit(0);
}
void showUpTime(){
char buffer[30] = "/usr/bin/uptime";
char* const args[] = {buffer, (char*) 0};
while(Timer>0){
cout<<"Uptime :"<<execv(buffer, args)<<"\n";
Timer-=5;
sleep(5);
}
exit(0);
}
void countDown(){
int min;int sec;
while(Timer>0){
min=Timer/60;
sec=Timer%60;
cout<<"Timer "<<min<<":"<<sec<<"\n";
Timer--;
sleep(1);
}
exit(0);
}
int main(int argc,char *argv[]){
if(argc<2)
Timer=10;
else
Timer=atoi(argv[1]);
pid_t pid;
int N=3,i;
int status;
if(!fork())showClock();
if(!fork())showUpTime();
if(!fork())countDown();
wait(&status);//parent waits;
cout<<"Program Exits Now\n";
return 0;
}
_'What是錯誤的'_實際上是這裏一個有效的問題過於狹窄。 **注意:**尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現它所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –