QNX.ORG.RU

Разработка => Программирование под QNX => Тема начата: LH от Августа 11, 2017, 06:19:15 am



Название: Странности при отработке ф-ции system()
Отправлено: LH от Августа 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 и выполнять команду при открытом файле на удаленном контроллере?

Спасибо.



Название: Re: Странности при отработке ф-ции system()
Отправлено: da-nie от Августа 12, 2017, 07:26:15 am
А если файл закрыть?


Название: Re: Странности при отработке ф-ции system()
Отправлено: LH от Августа 12, 2017, 08:23:32 am
Если файл закрыть, или открывать файл на "своем", а не удаленном
контроллере, то проблемы не возникает.

Проблема при открытом "через сеть" файле ...


Название: Re: Странности при отработке ф-ции system()
Отправлено: da-nie от Августа 12, 2017, 12:06:27 pm
Я так понимаю, вам просто интересно, почему так, и реальной проблемы нет? ;D
Возможно, просто ошибка в системе. В QNX тоже должны быть ошибки - куда ж без них?


Название: Re: Странности при отработке ф-ции system()
Отправлено: LH от Августа 14, 2017, 08:22:01 am
Не могу с Вами согласиться насчет "ошибок в QNX".

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

Проблему действительно обошел "с другой стророны"...


Название: Re: Странности при отработке ф-ции system()
Отправлено: da-nie от Августа 14, 2017, 09:10:49 pm
Цитировать
Не могу с Вами согласиться насчет "ошибок в QNX".

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


Название: Re: Странности при отработке ф-ции system()
Отправлено: LH от Августа 15, 2017, 08:31:06 am
Не могли бы Вы подтвердить или опровергнуть мой тест своим независимым тестированием?

Спасибо