Возвращаемое значение функции system()
#include<stdio.h>
#include<stdlib.h>
main()
{
printf("Hello World..\n");
system("ls");
}
Здесь...ON SUCCESSFUL исполнительная системная функция возвращает statys команды "ls"... и ON FAILURE возвращает -1..
так что кто-нибудь может помочь мне получить это условие FAILURE для системной функции, которая возвращает значение как "-1"
1 ответ
system
функция возвращает -1
если system
само по себе терпит неудачу, не если команда, которую это вызывает, терпит неудачу Например, system
возвращается -1
если fork
вызов не проходит. Это может произойти, если в вашей системе очень мало ресурсов, таких как память, или если ваша система накладывает ограничение на количество процессов, которые вы можете запустить.
Если команда не выполняется (например, если вы звоните system("false")
), значение, возвращаемое system
это не просто возвращаемое значение команды; это значение, возвращаемое wait
системный вызов; man 2 wait
для дополнительной информации. (Это предполагает Unix-подобную систему; поведение system()
на других операционных системах отличается.)
Конечно, если вы хотите увидеть значение, возвращаемое при вызове system
вам нужно сохранить это значение в переменной:
int result = system("ls");
Вы должны прочитать документацию для system
функция.
Если вы пытаетесь вызвать system
потерпеть неудачу и вернуться -1
Один из способов сделать это - использовать его для рекурсивного вызова вашей программы. Это может занять много памяти и может повлиять на вашу систему. Делайте это только в том случае, если вы единственный, кто использует систему, и не возражаете против возможности ее работы.
(Кстати, определение для main
должно быть int main(void)
, не просто main()
Хотя это не имеет прямого отношения. До 1999 года при отсутствии возвращаемого типа по умолчанию int
; это больше не разрешено, но многие компиляторы все еще поддерживают старую форму. Пустые скобки не указывают количество параметров; (void)
явно говорит, что нет никаких параметров, и является предпочтительной формой.)