windows oninitdialog
handle m_hmutex = ::createmutex(null, true, _t("szsel2collecter"));
if (getlasterror() == error_already_exists)
}// linux 下面用檔案鎖實現程序只能開啟單個例項,win32 用createmutex實現。
#include
#include
#include
#include
#include
#include
#define testlockfile "oneinstance.pid"
int validprocessrun(char* lockfile)
// 進行加鎖操作
struct flock f1;
f1.l_type = f_wrlck; // 設定為唯一寫鎖,如果是同乙個程序不會失敗,會替換原來的鎖。
f1.l_start = 0;
f1.l_whence = seek_set;
f1.l_len = 0; // 設定鎖的大小為為整個檔案
if(fcntl(fd, f_setlk, &f1) < 0)
printf("can't lock.\n");
return -1;
}// 截斷檔案
ftruncate(fd, 0);
char buf[32];
sprintf(buf, "%ld", (long)getpid());
write(fd, buf, strlen(buf)+1);
return 0;
}int main()
return 0;
}
linux 只啟動乙個程序例項
很多應用程式都只應該啟動乙個執行例項,特別是設計檔案io操作的程式,如果誤啟動了多個例項,可能會導致混亂的io,進而導致檔案寫亂。常見的做法 1.生成pid檔案 這種做法最常見了,應用於大多數的linux程式,如apache httpd,mysql。思路是配置乙個pid檔案,當程式啟動時,對pid檔...
win32 linux下網路程式設計十點需要注意的地方
書上看到的,有幾點覺得還是值得注意。1 標頭檔案 win32 include linux include 2 關閉 win32 closescoket s linux close fd 3 在nonblocking模式下呼叫connect,大部分返回 win32 wsaewouldblock lin...
c exe程式只讓啟動乙個
保證程式在系統中只能啟動乙個,實現思路 在程式啟動時,檢測系統中所有程序,判斷系統中是否已經存在該程式的程序 在main函式中新增如下 process pro1 process.getprocessesbyname process.getcurrentprocess processname proc...