TransWikia.com

Problema "o arquivo ja esta sendo usado por outro processo"

Stack Overflow em Português Asked by Lucas Fellipe Mondini Pereira on December 4, 2021

Estou tentando fazer um codigo para chamar a função do windows de ping e usar a stream de saida para arquivo do windows, e ao usar o codigo que o programa chama na console do windows da certo, mas pelo programa tenho um log dizendo "o arquivo ja esta sendo usado por outro processo"

class Archive{
    string name;
public:
    string getName(){
        return this->name;
    }
    fstream archive;
    Archive(string name){
        this->name = name;
        archive.open(name.c_str(), ios::out | ios::app);
    }
};


void ping (Archive &A, string IP){
    string command = "ping -t -a  ";

    command.insert(command.size(), IP);
    command.insert(command.size(), "  > ");
    command.insert(command.size(), A.getName());

    A.archive << system(command.c_str());
    getchar();
}

int main()
{
    Archive A("Ping.txt");
    ping(A, "8.8.8.8");

}


Porque está acontecendo esse erro?
Como resolvo?
e como faria melhor a sequencia que fiz ali

    command.insert(command.size(), IP);
    command.insert(command.size(), "  > ");
    command.insert(command.size(), A.getName());```?

One Answer

Você não esta dizendo um caminho no instante de criação. Quando se chama pela console o programa tem como contexto o caminho em que esta e portanto consegue criar o arquivo. No entanto quando ocorre o duplo click o programa não possui esse contexto.

Solução:

Archive A("./Ping.txt");

Answered by gorn on December 4, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP