Linux進程單例模式運行

Linux進程單例模式運行

#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>int write_pid(const char* pidFile)
{char str[32] = {0};int fd = open(pidFile,O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);if(fd < 0){   printf("can't open pidfile %s.\n",pidFile);exit(1);}   //Lock pidFile.if(lockf(fd, F_TLOCK,0))printf("can't lock pidfile %s.\n",pidFile);exit(0);}   sprintf(str,"%d\n",getpid());//write pid ot pidfilessize_t len = strlen(str);if(write(fd,str,len) != len){   printf("can't write pid %s.\n",pidFile);exit(0);}   //flush disk cachefdatasync(fd);printf("write pid file %s.\n",pidFile);return fd; 
}int main()
{int pid_fd = write_pid("server.pid");while(1){   ;}lockf(pid_fd, F_ULOCK,0);close(pid_fd);
}

終端1

[banting@localhost test]$ ls -tlr
-rw-rw-r--. 1 banting banting      834 Jun 30 15:53 test75.cpp
-rwxrwxr-x. 1 banting banting    19760 Jun 30 16:03 test75
[banting@localhost test]$ g++ -g test75.cpp -o test75
[banting@localhost test]$
[banting@localhost test]$ ./test75
write pid file server.pid.

終端2

[banting@localhost test]$ ps -ef |grep test75
banting   519636  596192 99 16:03 pts/38   00:00:38 ./test75
banting   519676  518705  0 16:04 pts/96   00:00:00 grep --color=auto test75
[banting@localhost test]$ cat server.pid 
519636
[banting@localhost test]$ ./test75
can't lock pidFile server.pid.
[banting@localhost test]$ 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87626.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87626.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87626.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Web 后端】部署服務到服務器

文章目錄 前言一、如何啟動服務二、掛載和開機啟動服務1. 配置systemctl 服務2. 創建server用戶3. 啟動服務 總結 前言 如果你的后端服務寫好了如果部署到你的服務器呢&#xff0c;本次通過fastapi寫的服務實例&#xff0c;示范如何部署到服務器&#xff0c;并做服務管理。 一…

國產MCU學習Day5——CW32F030C8T6:窗口看門狗功能全解析

每日更新教程&#xff0c;評論區答疑解惑&#xff0c;小白也能變大神&#xff01;" 目錄 一.窗口看門狗&#xff08;WWDG&#xff09;簡介 二.窗口看門狗寄存器列表 三.窗口看門狗復位案例 一.窗口看門狗&#xff08;WWDG&#xff09;簡介 CW32F030C8T6 內部集成窗口看…

2025年文件加密軟件分享:守護數字世界的核心防線

在數字化時代&#xff0c;數據已成為個人與企業的寶貴資產&#xff0c;文件加密軟件通過復雜的算法&#xff0c;確保信息在存儲、傳輸與共享過程中的保密性、完整性與可用性。一、文件加密軟件的核心原理文件加密軟件算法以其高效性與安全性廣泛應用&#xff0c;通過對文件數據…

node.js下載教程

1.項目環境文檔 語雀 2.nvm安裝教程與nvm常見命令,超詳細!-阿里云開發者社區 C:\Windows\System32>nvm -v 1.2.2 C:\Windows\System32>nvm list available Error retrieving "http://npm.taobao.org/mirrors/node/index.json": HTTP Status 404 C:\Window…

(AI如何解決問題)在一個項目,跳轉到外部html頁面,頁面布局

問題描述目前&#xff0c;ERP后臺有很多跳轉外部鏈接的地方&#xff0c;會直接打開一個tab顯示。因為有些頁面是適配手機屏幕顯示&#xff0c;放在瀏覽器會超級大。不美觀&#xff0c;因此提出優化。修改前&#xff1a;修改后&#xff1a;思考過程1、先看下代碼&#xff1a;log…

網絡通信協議與虛擬網絡技術相關整理(上)

#作者&#xff1a;程宏斌 文章目錄 tcp協議udp協議arp協議icmp協議dhcp協議BGP協議OSPF協議BGP vs OSPF 對比表VLAN&#xff08;Virtual LAN&#xff09;VXLAN&#xff08;Virtual Extensible LAN&#xff09;IPIP&#xff08;IP-in-IP&#xff09;vxlan/vlan/ipip網橋/veth網…

物聯網軟件層面的核心技術體系

物聯網軟件層面的核心技術體系 物聯網(IoT)軟件技術棧是一個多層次的復雜體系&#xff0c;涵蓋從設備端到云平臺的完整解決方案。以下是物聯網軟件層面的關鍵技術分類及詳細說明&#xff1a; 一、設備端軟件技術 1. 嵌入式操作系統 實時操作系統(RTOS)&#xff1a; FreeRTO…

GreatSQL通過偽裝從庫回放Binlog文件

GreatSQL通過偽裝從庫回放Binlog文件 一、適用場景說明 1、主庫誤操作恢復 利用 Binlog 在其他實例解析、回放&#xff0c;根據gtid只回放到指定位點。 2、網絡隔離環境同步 備份恢復后可以拉去主庫Binlog文件至新實例同步增量數據。 3、備份恢復遇到Binlog文件過大處理 恢復實…

MVC 架構設計模式

在現代軟件開發中&#xff0c;架構設計決定了一個項目的可維護性與可擴展性。MVC&#xff08;Model-View-Controller&#xff09;作為經典的分層設計模式&#xff0c;廣泛應用于 Web 系統、前端應用乃至移動端開發中。本文不僅介紹 MVC 的核心思想和機制&#xff0c;還將結合具…

(18)python+playwright自動化測試鼠標拖拽-上

1.簡介 本文主要介紹兩個在測試過程中可能會用到的功能&#xff1a;在selenium中介紹了Actions類中的拖拽操作和Actions類中的劃取字段操作。例如&#xff1a;需要在一堆log字符中隨機劃取一段文字&#xff0c;然后右鍵選擇摘取功能。playwright同樣可以實現元素的拖拽和釋放的…

Android 網絡全棧攻略(四)—— TCPIP 協議族與 HTTPS 協議

Android 網絡全棧攻略系列文章&#xff1a; Android 網絡全棧攻略&#xff08;一&#xff09;—— HTTP 協議基礎 Android 網絡全棧攻略&#xff08;二&#xff09;—— 編碼、加密、哈希、序列化與字符集 Android 網絡全棧攻略&#xff08;三&#xff09;—— 登錄與授權 Andr…

Python爬蟲實戰:從零構建完整項目(數據采集+存儲+異常處理)

Python爬蟲實戰&#xff1a;從零構建完整項目&#xff08;數據采集存儲異常處理&#xff09; 爬蟲不是簡單的請求解析&#xff0c;而是一個系統工程。本文將帶你體驗企業級爬蟲開發的核心流程。 一、前言&#xff1a;為什么需要完整的爬蟲項目&#xff1f; 作為初學者&#xf…

大數據時代UI前端的用戶體驗設計新思維:以用戶為中心的數據可視化

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言&#xff1a;大數據重構用戶體驗設計的底層邏輯在數據爆炸式增長的今天&#xff0c;用…

FreeRTOS 中任務控制塊(Task Control Block,TCB)用于管理和描述任務的核心數據結構

在 FreeRTOS 中&#xff0c;任務控制塊&#xff08;Task Control Block&#xff0c;TCB&#xff09;是用于管理和描述任務的核心數據結構。每個任務都有一個對應的 TCB&#xff0c;它包含了任務的所有相關信息。 TCB 的主要功能 存儲任務狀態信息&#xff1a;TCB 中包含了任務…

前端-HTML-day1

目錄 1、標簽語法 2、HTML基本骨架 3、標簽的關系 4、注釋 5、標題標簽 6、段落標簽 7、換行和水平線標簽 8、文本格式化標簽 9、圖像標簽-基本使用 10、圖像標簽-屬性 11、相對路徑 12、絕對路徑 13、超鏈接 14、音頻 15、視頻 16、綜合案例1--個人簡介 17、…

OpenCV篇——項目(二)OCR文檔掃描

目錄 文檔掃描項目說明 前言 文檔掃描代碼總體演示 OCR文檔識別代碼總體演示: ?編輯 代碼功能詳解 1. 預處理階段 2. 邊緣檢測 3. 輪廓處理 4. 透視變換 5. 后處理 主要改進說明&#xff1a; 使用建議&#xff1a; 文檔掃描項目說明 前言 本項目實現了一個自動…

Java 中導出包含多個 Sheet 的 Excel 文件

在 Java 中導出包含多個 Sheet 的 Excel 文件&#xff0c;可以使用 Apache POI 或 EasyExcel&#xff08;阿里開源庫&#xff09;。以下是兩種方法的詳細實現&#xff1a; 方法 1&#xff1a;使用 Apache POI&#xff08;支持 .xls 和 .xlsx&#xff09; 1. 添加 Maven 依賴 …

OneCode采用虛擬DOM結構實現服務端渲染的技術實踐

一、技術背景與挑戰 隨著企業級應用復雜度的提升&#xff0c;傳統服務端渲染(SSR)面臨頁面交互性不足的問題&#xff0c;而純前端SPA架構則存在首屏加載慢和SEO不友好的缺陷。OneCode框架創新性地將虛擬DOM技術引入服務端渲染流程&#xff0c;構建了一套兼顧性能與開發效率的企…

變幻莫測:CoreData 中 Transformable 類型面面俱到(八)

概述 各位似禿似不禿小碼農們都知道&#xff0c;在蘋果眾多開發平臺中 CoreData 無疑是那個最簡潔、擁有“官方認證”且最具兼容性的數據庫框架。使用它可以讓我們非常方便的搭建出 App 所需要的持久存儲體系。 不過&#xff0c;大家是否知道在 CoreData 中還存在一個 Transfo…

汽車LIN總線通訊:從物理層到協議棧的深度解析

目錄一、物理層&#xff1a;單線傳輸的信號奧秘1.1 電平定義與信號傳輸1.2 關鍵硬件組件作用二、數據鏈路層&#xff1a;幀結構與通信協議2.1 LIN幀的組成與功能2.2 主從式通信機制三、波特率同步&#xff1a;從節點的時鐘校準原理四、軟件實現&#xff1a;基于S32K144的主節點…