Запустите strace без параметра -e
и посмотрите, не что улучшает ваш результат.
Есть несколько способов создать файл. Вместо open
, очень вероятно, что любой инструмент, создающий этот файл, сначала откроет временный файл, запишет данные, а затем переименует файл по завершении.
С вашим текущим лимитом ( execve, vfork, open, creat
) вы не увидите такого поведения.
Например, для этого простого скрипта Python:
import os
import tempfile
fd = tempfile.NamedTemporaryFile(dir='.', delete=False)
fd.write('this is a test\n')
fd.close()
os.rename(fd.name, 'output')
Запуск strace
с вашими аргументами и последующий поиск вывода
в результатах ничего не даст:
$ strace -e trace=execve,vfork,open,creat -o trace -f -s 80 python tmptest.py
$ grep output trace
$
Но если я удалю фильтр -e
:
$ strace -o trace -f -s 80 python tmptest.py
$ grep output trace
4523 rename("/home/lars/tmp/tmpZDwvPK", "output") = 0
В комментариях к вашему вопросу Сато Кацура приводит пример, в котором вы не увидите целевое имя файла в выводе strace
, но я думаю, что вы вряд ли столкнетесь с этим при запуске make
, если вы начинаете с чистой среды сборки.