C++利用shmget实现start,stop交替执行 |
|
www.nanhushi.com 佚名 不详 |
C++利用共享内存实现start执行之后已经要执行stop才能在执行start,考试大把mian的源代码贴出来说明这么个问题 int main(int argc, char *argv[]) { int iShmId; if( argc <= 1) { DisplayHelp(); } else if( !strcmp( argv[1], "start" ) ) { iShmId = shmget( ftok("dvrcollector",1), 1 , IPC_CREAT|IPC_EXCL|0666 ); if( -1 == iShmId && errno == EEXIST ) { printf( "dvrcollector already running.\n"); return -1; } // printf( "start...\n"); StartDownFile(); } else if( !strcmp( argv[1], "restart" ) ) { iShmId = shmget( ftok("dvrcollector",1), 1 , IPC_CREAT|IPC_EXCL|0666 ); if( -1 == iShmId && errno == EEXIST ) { StopDownFile(); // printf( "stop...\n"); sleep(1); } // printf( "start...\n"); StartDownFile(); } else if( !strcmp( argv[1], "stop" ) ) { iShmId = shmget( ftok("dvrcollector",1), 1 , IPC_CREAT|IPC_EXCL|0666 ); if( -1 == iShmId && errno == EEXIST ) { if( -1 != (iShmId = shmget( ftok("dvrcollector",1), 1 , IPC_CREAT | 0666 ) ) ) shmctl( iShmId, IPC_RMID, NULL); // printf( "stop...\n"); StopDownFile(); } else { shmctl( iShmId, IPC_RMID, NULL ); printf( "dvrcollector not running.\n" ); } } else { DisplayHelp(); } return 0; }
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: C++技巧(C++类中定义私有构造函数) 下一篇文章: C++技巧(JNI编程的大致步骤) |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|