ошибка: команда не найдена, при отправке аргументов командной строки - PullRequest
0 голосов
/ 11 мая 2011

У меня очень простая программа ниже.

#include<stdio.h>
void main(int argc, char *argv[])
{
  printf("\n %s",argv[3]);
}

Скажите, что исполняемый файл называется a.out и запускается как $. / A.out открытый путь / к / моему / файлу O_WRONLY | O_APPEND дает Команду не найдена ошибка. где запускать его так же, как запускать его как $. / a.out открытый путь / к / моему / файлу O_WRONLY дает вывод O_WRONLY.

Это из-за |

Спасибо за ваше драгоценное время.

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Символ канала | имеет особое значение для оболочки: он создает конвейер , где выходные данные одного процесса передаются на вход другого процесса. Когда вы набираете foo | bar, оболочка порождает два процесса с командными строками foo и bar и подключает выход первого к входу последнего.

Чтобы избежать такого поведения, заключите в кавычки аргументы командной строки:

$ ./a.out open path/to/my/file "O_WRONLY|O_APPEND"
2 голосов
/ 11 мая 2011

Ваша оболочка принимает | перед O_APPEND как канал и не распознает эту команду (потому что она не существует). Попробуйте $./a.out open path/to/my/file "O_WRONLY|O_APPEND".

Кроме того, не используйтеvoid main, используйте int main (некоторые люди могут получить сердечный приступ, если увидят его :))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...