|
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 221
|
||||||
Error: 'system' was not declared in this scope24.09.2019, 11:47. Показов 11014. Ответов 68
Метки нет (Все метки)
Как я понял параметры argv[] это консольные команды которые добавляются к имени файла в командой строке.
Можно ли способом описаным у меня ниже назначить команде определенные действия при вызове программы с этой командой?
Мне нужно чтобы программа не выключалась после работы. В делфи для этого использовал read;. А как без system(pause) или каким-то другим способом оставить программу после выполнения? Если че язык С++ не знаю вобще, только изучаю и многое непонятно -_-. Добавлено через 6 минут Проблема с pause решена. Натупил по невнимательности. Там ниже кода вообще бред написан. Добавлено через 1 минуту А нет всетаки пишет: error: 'system' was not declared in this scope
0
|
||||||
| 24.09.2019, 11:47 | |
|
Ответы с готовыми решениями:
68
Не компилируется приложение: 'system' was not declared in this scope
|
|
"C with Classes"
|
||||
| 24.09.2019, 16:37 | ||||
|
Добавлено через 1 минуту Добавлено через 1 минуту
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 24.09.2019, 18:24 | ||||||
|
1. родительский процесс запускает дочерний. и здесь важно не забывать записывать путь к модулю в нулевой аргумент дочернего процесса. 2. дочерний процесс был запущен из под родительского. и здесь важно понимать: не факт, что нулевой аргумент хранит путь к модулю. и что бы не полагаться на корректность вызывающей стороны, нужно использовать специализированное апи. писать грамотно, или зависеть от прихоти "маловероятных событий". можно писать чушь. можно акцентрировать на этом внимание. дабы не ввели ЕГО в заблуждение бесы-балбесы. который гарантирует мне безопасность. а вообще аналогия не уместна. программный код либо инвариантен, либо нет. Добавлено через 22 минуты например, нужно запустить программу. казалось бы, фигня делов: CreateProcess(path2programm, params, ...);и всё, приплыли. все аргументы смещены влево. нулевой аргумент хранит не путь к модулю, а первый аргумент командной строки. в моей практике был один случай, когда один паренёк будучи ещё новичком, запустил вот так одну консольную утилиту. утилита полезла в базу данных, и слегка набедокурила.
1
|
||||||
|
123
36 / 0 / 1
Регистрация: 18.03.2015
Сообщений: 221
|
||||||
| 25.09.2019, 02:34 [ТС] | ||||||
|
Ну вот у меня работает только если
Получается в первой строке массива уже чтото есть. Только с начиная с 1. Все что хотел узнать узнал. Всем спасибо ^^.
0
|
||||||
|
4127 / 2705 / 433
Регистрация: 09.09.2017
Сообщений: 12,030
|
||||||||
| 25.09.2019, 10:44 | ||||||||
|
И даже так - это актуально только для многопоточных программ, даже прогопроцессных, что совсем редкость. Не по теме:
Так и тут: сначала надо изучить синтаксис и конструкции языка, и только потом переходить к тонкостям и исключениям. Тем более, что именно та область, в которой подобная экзотика встречается, может никогда и не понадобиться ТСу. system("format C:"); вызвали а потом удивлялись "а чего это все поломалось".
0
|
||||||||
|
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
|
|
| 25.09.2019, 17:34 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||
| 25.09.2019, 19:08 | ||||||||||||
|
и не знаком с особенностями winapi. но скажи, какое именно слово в этом предложении оказалось тебе не понятным? если мои речи тебе кажутся слишком сложными для понимания, почитай документацию если я тебя правильно понял. system редко используется,просто потому, что у неё функционал слишком бедный. она бесполезна даже для самых типичных задач. пример типичной задачи: есть родительский процесс (gui приложение) из под него нужно запустить дочерний процесс. какую нибудь консольную утилиту. при этом утилита запускается без консольного окна. необходимо дождаться окончания работы утилиты. получить код возврата, и заграбастать весь её вывод (stdout/stderr) теперь покажи, как ты это сможешь оформить "в виде потоков", или при помощи system. что ей впаривают. инвариант? не, не слышал. это - нормальный случай. худший бывает либо у новичков, либо у худших программистов. потому что это удобно. особенно, когда читаешь с телефона. не нужно скролить влево-вправо. ты мне картинку одну сейчас напомнил: "нечего сказать - докалебусь до орфографии" лично мне всё равно, кто как пишет по-русски: "докалебаться до орфографии", "докалебатся до орфографии", или даже: "докалебаццо до орфографии". если при этом не искажается смысл сообщения. поэтому, если я докалёбывюсь, то докалёбываюсь всегда до смысла. докалёбываццо до орфографии - это убого. за нитью беседы следишь? выше ты утверждал: если не куришь нюансы. и вот нахера ты теперь начал загонять про удивление? именно поэтому и возникло понятие "инварианта". только вот сама эта метрика не зависит от скорости разработки. годный программист успевает решать задачи за поставленное время. и при этом он выдаёт качество. плохому программисту
0
|
||||||||||||
|
4127 / 2705 / 433
Регистрация: 09.09.2017
Сообщений: 12,030
|
|||||||||||||||||||
| 26.09.2019, 14:06 | |||||||||||||||||||
|
Неужели для вас настолько сложна концепция следования стандартам, даже если требует лишних телодвижений?
cat. Она ждет имена файлов, и не может отследить что первый аргумент ей передают в argv[0].С чего я и начал: если ты неправильно вызываешь программу, она имеет полное право работать не так как ты ожидаешь. Не по теме:
Добавлено через 4 часа 25 минут
1
|
|||||||||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||||||||||||||
| 26.09.2019, 15:35 | |||||||||||||||||||
|
Создаст, например, ссылку для запуска и в argv[0] начнет приходить имя этой ссылки, а не "имя исполняемого файла". Или, запуская из консоли вашу программу как
1
|
|||||||||||||||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 26.09.2019, 17:21 | |
|
hoggy, Есть такая вешь - BusyBox.
Допустим вам надо найти строчку "rm" в "очень_важный_файл" Вы, описанным вами способом (со съехавшим на одну позицию argv), запускаете "grep rm очень_важный_файл". Что произойдет? И кто в этом виноват - вы или разработчики BusyBox?
0
|
|
|
4127 / 2705 / 433
Регистрация: 09.09.2017
Сообщений: 12,030
|
|||
| 26.09.2019, 17:35 | |||
|
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 26.09.2019, 19:45 | ||||
|
Речь шла a.exe, то ожидать, что в argv[0] всегда (c) будет приходить a.exe - не верно. Только об этом.
0
|
||||
|
"C with Classes"
|
|
| 27.09.2019, 04:42 | |
|
0
|
|
|
4127 / 2705 / 433
Регистрация: 09.09.2017
Сообщений: 12,030
|
|||
| 27.09.2019, 10:05 | |||
printf("usage: %s [input] -o [output] [flags]\n", argv[0]);, а здесь вообще не важно полный путь, относительный. Даже ошибки hoggy не будут критичными.Для такого применения argv[0] в виде команды вызова - то что надо.
0
|
|||
|
60 / 45 / 17
Регистрация: 12.08.2019
Сообщений: 161
|
||||
| 27.09.2019, 11:51 | ||||
|
есть стандарт языка http://www.open-std.org/jtc1/s... /n4296.pdf 3.6.1 Main function
0
|
||||
|
4127 / 2705 / 433
Регистрация: 09.09.2017
Сообщений: 12,030
|
|
| 27.09.2019, 11:59 | |
|
0
|
|
|
60 / 45 / 17
Регистрация: 12.08.2019
Сообщений: 161
|
|
| 27.09.2019, 12:06 | |
|
Не по теме: тогда вообще не пойму кто тут за красных, а кто за белых ![]()
1
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||
| 27.09.2019, 14:11 | |||
Ну так допустим, что путь к модулю лежит в PATH, соответственно вызов может не содержать этот путь. Или вызов может идти через ссылку, которая лежит в другом месте, относительно самого модуля. Оба случая не зависят ни от кого, кроме пользователя системы, т.е. извращений программиста как бы и нет. Если же в программе нужен именно путь или именно оригинальное имя модуля, то расчет на argv[0] можно считать неоправданным. По-моему Хогги именно про это и говорил. Нет?
0
|
|||
|
4127 / 2705 / 433
Регистрация: 09.09.2017
Сообщений: 12,030
|
|||||
| 27.09.2019, 14:47 | |||||
|
argv[0] содержит имя, по которому исполняемый файл вызван. Вызов
system(argv[0]); позволяет запустить тот же самый бинарник.При желании это соглашение можно нарушить и передать в argv[0] произвольную строку - но это будет именно нарушением соглашения и для этого нужны веские причины. Дальше создаем мягкую ссылку prog_soft. Пока об оригинальном имени говорить еще можно, хотя и со скрипом. С одной стороны очевидно, что мягкая ссылка вторична по отношению к оригиналу, с другой - пользователь сознательно изменил имя программы (полный путь). Наверное, ему это зачем-то надо. А теперь создем жесткую ссылку prog_hard. Какое из имен теперь "оригинальное"? Жесткая ссылка это просто другое имя того же файла. realpath никто, вроде, не отменял...
0
|
|||||
|
60 / 45 / 17
Регистрация: 12.08.2019
Сообщений: 161
|
|||
| 27.09.2019, 14:57 | |||
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||||||||||||
| 27.09.2019, 15:31 | ||||||||||||||
|
COKPOWEHEU, из вашего ответа стало понятно, что вы спорите с вами же самим придуманными утверждениями
![]() Вот например: Далее: Вот опять: И вот снова.
В любом случае здесь надо знать, что в argv[0] может прийти не то имя, которым называется исполняемый файл. Добавлено через 13 минут prog и лежит она в каталоге /opt/3rd_party/bin, который юзер добавил в PATH.Далее он в консоли вызывает вашу программу как
argv[0]? Правильно prog и получит. Что вернет realpath для строки prog? Правильно, NULL вернет. А все потому, что в строке prog нет пути к /opt/3rd_party/bin/prog, ни относительного, ни абсолютного, никакого.Добавлено через 1 минуту Теперь возвращаемся к цитате:
0
|
||||||||||||||
| 27.09.2019, 15:31 | |
|
[Error] 'm' was not declared in this scope [Error] 'k' was not declared in this scope [Error] 'If' was not declared in this scope Ошибка: [Error] 'x' was not declared in this scope
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|