Есть ли способ написать код на C, который позволит нам определить, запущен ли предыдущий экземпляр приложения? Мне нужно проверить это портативным способом для Linux и Windows, обе из которых используют последнюю доступную версию GCC.
Любые примеры переносимого кода могут оказать огромную помощь. Теперь я вижу два варианта:
- Проверьте список процессов. Здесь Linux имеет хорошие инструменты, но я не думаю, что те же функции применимы к Windows. Может быть, некоторые библиотеки GNU для обоих SO? Какие библиотеки или функции?
- Сохраните и заблокируйте файл. Теперь, как сделать это так, чтобы обе системы могли понять? Одна проблема, где сохранить файл? Деревья путей отличаются от каждой системы. Кроме того, если выбран относительный путь, два приложения могут работать с разными заблокированными файлами в разных каталогах.
Спасибо!
Беко.
PS. У СО есть разные реквизиты, поэтому, если вы знаете одно, а не другое, пожалуйста, ответьте. В конце концов, если не существует переносимого «одиночного» способа, я все еще могу использовать #ifdef и коды, предложенные в качестве ответа.
Язык C (не c ++), консольное приложение, gcc, linux и windows