Я ожидаю, что при запуске
. / MyScript
для передачи "test.txt" откроется
Это неверное ожидание,Когда вы используете оператор перенаправления оболочки <
, он открывает файл text.txt
и назначает дескриптор файла для стандартного ввода вашей программы, то есть дескриптор файла 0 (STDIN_FILENO).Поэтому нет необходимости снова открывать файл - это уже сделано.
Если вы хотите, чтобы ваша программа получала имя файла в качестве аргумента, не используйте <
и передайте его в качестве аргумента:
./myScript test.txt
Теперь вы сможете получить имя файла в argv[1]
вашей программы и использовать его при вызове системного вызова open
.
Примечание: Cэто не сценарий, а скомпилированный язык, поэтому вам лучше получить правильную терминологию (например, «программа C» вместо «сценарий C»).