win32 linux 只啟動乙個程序

2021-10-23 04:16:30 字數 891 閱讀 5721

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...