Permalänk
Medlem

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!

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
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

Permalänk
Medlem

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);

Visa signatur

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

Permalänk
Medlem

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

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

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
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

Permalänk
Medlem
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.