Ниже приведен мой код, который будет вызываться каждым потоком для записи вывода команды ping в текстовый файл. Файл создан правильно, но в нем ничего нет. На данный момент я не создавал никаких потоков и просто вызывал функцию из main:
customPing("www.google.com", 10, 2, 1);
void customPing(char *url, int test_interval,int samplesPerTest, int testDuration)
{
printf("-->%s %d(sec) %d %d(hrs)\n", url, test_interval, samplesPerTest, testDuration);
int durationInProgress = 0,
durationInSeconds = testDuration * 10,
n = samplesPerTest;
char pingCmd[80];
char filename[10];
FILE *fptr;
sprintf(filename, "pingResult%d.txt", fileCounter++);
fptr = fopen(filename, "a");
sprintf(pingCmd, "ping -n %d %s >> %s ", n, url,filename);
printf("ping command: %s\n", pingCmd);
while (durationInProgress <= durationInSeconds )
{
system(pingCmd);
durationInProgress += test_interval;
printf("Going to sleep...\n");
fclose(fptr);
Sleep(test_interval);
fptr = fopen(filename, "a");
}
printf("***Done***\n");
}
ВЫВОД:
1. Enter url: www.google.ca
2. Enter Testing-Interval(10 sec, 20 sec, etc): 10
3. Test Samples per test (10, 100 etc): 2
4. Start test (yes/no): yes
4. Test Duration ( 1 hr, 24 hrs, etc) 1
***Test Starting***
-->www.google.com 10(sec) 2 1(hrs)
ping command: ping -n 2 www.google.com >> pingResult0.txt
The process cannot access the file because it is being used by another process.
Going to sleep...
The process cannot access the file because it is being used by another process.
Going to sleep...
***Done***
Press any key to continue . . .
Есть идеи, что я делаю неправильно ???
Я использую Visual Studio 2008, Win Vista. (Если это помогает)
Спасибо.