我想知道如果C++有任何方式做中斷。我想要一個程序將信息存儲在文本文件中,而另一個程序根據文本文件中的內容打印語句。由於我希望它儘可能準確,因此當更新程序更新文件時,我需要中斷打印程序。C++中斷?
Q
C++中斷?
0
A
回答
1
C++本身並不提供這種功能,它對其他可能或不可能運行的程序一無所知。
您需要了解的是IPC(進程間通信),您的操作系統可能提供的內容。
像信號,共享內存,信號量,消息隊列等事情。
由於您似乎正在使用文件本身作爲將內容傳遞到其他進程的方法,因此信號可能是要走的路。你只需要將信號從進程A發送到進程B,並且信號處理程序將在後者中運行。
當然,這一切都取決於哪個您的目標操作系統。
+0
我打算使用Windows,但如果Linux更好,我也可以使用它。但在此之前,礦山的整體項目包括如上所述的程序A和程序B,以及連接到程序B的硬件。而不是B打印,它將命令發送到硬件以點亮某些按鈕。 Linux服務器能否與我的硬件進行交互? – dalawh
1
如果您使用Windows,則可以使用FindFirstChangeNotification。
這是我的一些舊代碼。這是運行在它自己的線程:
DWORD CDiskWatcher::Run(void *vpParameter)
{
CFileNotifyInterface *pIface = (CFileNotifyInterface *)vpParameter;
HANDLE handles[2];
handles[0] = m_hQuitEvent;
handles[1] = ::FindFirstChangeNotification(m_szPath, FALSE, FILE_NOTIFY_CHANGE_LAST_WRITE|FILE_NOTIFY_CHANGE_FILE_NAME);
DWORD dwObject;
if (INVALID_HANDLE_VALUE != handles[1]) {
do {
// Wait for the notification
dwObject = ::WaitForMultipleObjects(2, handles, FALSE, INFINITE);
if (WAIT_OBJECT_0 + 1 == dwObject) {
// Continue waiting...
::FindNextChangeNotification(handles[1]);
pIface->FireFileSystemChange(m_szPath);
}
} while (WAIT_OBJECT_0 != dwObject);
// Close handle
::FindCloseChangeNotification(handles[1]);
}
return 0;
}
注m_hQuitEvent與CreateEvent()和CFileNotifyInterface創建是回調:
class CFileNotifyInterface
{
public:
virtual void FireFileSystemChange(const char *szPath) = 0;
};
相關問題
- 1. 中斷與C
- 2. 8051 c中斷
- 3. C:fprintf用Ctrl C中斷C
- 4. C,C++的中斷機制
- 5. C#主題 - 中斷
- 6. Visual C++,斷點不會中斷
- 7. C中的軟件中斷?
- 8. 如何模擬C/C++中的中斷?
- 9. C++中的掩碼斷言
- 10. C#if/else線程中斷
- 11. C++調試中斷異常
- 12. 時間中斷在C
- 13. C++中斷或取消getch();
- 14. C#Console.Out()如果中斷
- 15. 在C中斷言權限#
- 16. C++中的模板斷言?
- 17. c語言中斷循環
- 18. 中斷C定時器
- 19. C++雖然循環中斷
- 20. c#while循環中斷
- 21. 添加minizip中斷Objective-C
- 22. C - 循環不會中斷
- 23. 推斷父類中C++
- 24. Visual Studio中C++的斷點
- 25. c#udpclient響應中斷
- 26. C++多切換和中斷?
- 27. 在硒C中斷言#
- 28. c語言的中斷
- 29. C++多線程中斷
- 30. 中斷getline循環C++
中斷是更大的OS的事情,你用哪個操作系統? – imreal
文件不是進行進程間通信的非常好的方法。任何機會,你可以使用管道或套接字? –