Страниц: [1]
  Печать  
Автор Тема: Странности при отработке ф-ции system()  (Прочитано 608 раз)
LH
Full Member
***
Offline Offline

Сообщений: 124


Просмотр профиля
« : Августа 11, 2017, 06:19:15 am »

Есть простой код:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int ret;
...
  ret=system("uname -a");   //любая команда sh
...
}

При исполнении ф-ция system() выполняется без ошибки,
выводится результат выполнения команды "uname -a", ret = 0;


Теперь 2 контроллера А1 и А2 в Qnet сети, и на удаленном контроллере А2 есть файл /net/A2/tmp/tmpfile.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
  int ret,fp;
...
  fp=open("/net/A2/tmp/tmpfile",O_RDWR);
  ret=system("uname -a");
...
}

При исполнении программы на контроллере А1 и при удачном открытии удаленного файла,
так что  fp>0, ф-ция system("uname -a") завершается с ошибкой,выводится "sh: can't fork, try again".

Код ошибки ret=256, "Socket is already connected".

Как можно объяснить отказ system() вызывать sh и выполнять команду при открытом файле на удаленном контроллере?

Спасибо.

Записан
da-nie
Full Member
***
Online Online

Сообщений: 167



Просмотр профиля
« Ответ #1 : Августа 12, 2017, 07:26:15 am »

А если файл закрыть?
Записан

И день и ночь в пути
LH
Full Member
***
Offline Offline

Сообщений: 124


Просмотр профиля
« Ответ #2 : Августа 12, 2017, 08:23:32 am »

Если файл закрыть, или открывать файл на "своем", а не удаленном
контроллере, то проблемы не возникает.

Проблема при открытом "через сеть" файле ...
Записан
da-nie
Full Member
***
Online Online

Сообщений: 167



Просмотр профиля
« Ответ #3 : Августа 12, 2017, 12:06:27 pm »

Я так понимаю, вам просто интересно, почему так, и реальной проблемы нет? Grin
Возможно, просто ошибка в системе. В QNX тоже должны быть ошибки - куда ж без них?
Записан

И день и ночь в пути
LH
Full Member
***
Offline Offline

Сообщений: 124


Просмотр профиля
« Ответ #4 : Августа 14, 2017, 08:22:01 am »

Не могу с Вами согласиться насчет "ошибок в QNX".

Надеюсь что мой пример независимо проверят и опровергнут.

Проблему действительно обошел "с другой стророны"...
Записан
da-nie
Full Member
***
Online Online

Сообщений: 167



Просмотр профиля
« Ответ #5 : Августа 14, 2017, 09:10:49 pm »

Цитировать
Не могу с Вами согласиться насчет "ошибок в QNX".

Напрасно. Я помню, они точно были. Smiley Не помню только, что именно. Но вот в данном случае система твердит вам о повторном открытии незакрытого сокета - но такого быть не должно точно при любых операциях через QNet.
Записан

И день и ночь в пути
LH
Full Member
***
Offline Offline

Сообщений: 124


Просмотр профиля
« Ответ #6 : Августа 15, 2017, 08:31:06 am »

Не могли бы Вы подтвердить или опровергнуть мой тест своим независимым тестированием?

Спасибо
Записан
Страниц: [1]
  Печать  
 
Перейти в: