Trädvy Permalänk
Medlem
Registrerad
Sep 2009

C || File || is_open()?

Hej i C's File I/O finns det något sätt att kolla om den används t,ex c++ kan jag kolla om fstream används genom

if(fstream::is_open()){ //Code }

Men hur skulle jag kunna göra något liknade i C med deras File I/O?

Tack för svar!

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2007

Du kan testa att öppna filen och låsa den själv. Går det så är den inte öppen av nåt annat program. Typ med en

File.Open("blabla.txt", FileMode.Open, FileAccess.Read, FileShare.None);

Core i7 7700K | Titan X (Pascal) | MSI 270I Gaming Pro Carbon | 32 GiB Corsair Vengeance LPX @3000MHz | Samsung 960 EVO 1TB

Trädvy Permalänk
Medlem
Registrerad
Sep 2009

Räcker det med att göra så här?

if(FILE != NULL){ //Code }

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Trädvy Permalänk
Medlem
Registrerad
Feb 2015
Skrivet av Oggmeiler:

Va ett tag sen jag höll på med C, men detta borde väl fungera?

FILE *fp; fp = fopen("filmjölk", "r"); if ((fp == NULL){ printf("Error opening file\n"); }

Nja... Mer än ett program kan ha en och samma fil öppen samtidigt.

I ren C så finns det inget sätt att avgöra om en given fil redan används av något annat program, eller inom ett och samma program för den delen. (Fast i det senare fallet går det ju att hålla reda på det själv)

Beroende på vilket operativsystem som används så kan det finnas funktioner för detta, men det är helt OS-beroende.