![Как вызвать терминал при выполнении скомпилированной программы на языке C?](https://rvso.com/image/1313341/%D0%9A%D0%B0%D0%BA%20%D0%B2%D1%8B%D0%B7%D0%B2%D0%B0%D1%82%D1%8C%20%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%20%D0%BF%D1%80%D0%B8%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B8%20%D1%81%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%BD%D0%B0%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B5%20C%3F.png)
Я переписал программу gnome-screenshot, чтобы она соответствовала моим потребностям в получении скриншота с вывода вторичной самодельной видеокарты, и теперь, когда я нажимаю кнопку PrintScreen, она выполняет его (как и требовалось). Однако в программе есть некоторые операторы "printf" (написанные на C), которые я хотел бы видеть в качестве вывода. Есть ли способ сделать это? Возможно, создав терминал при выполнении программы?
Работает: Red Hat Enterprise Linux Client версии 5.8 (Tikanga)
решение1
Самый простой способ захватить вывод — обернуть команду PrintScreen в оболочку и перенаправить вывод в файл. Например, если ваша программа называется myprscr
, скрипт оболочки может быть таким:
#!/bin/sh
myprscr 2>1 1>>/tmp/myprscr.log
Затем кнопка PrintScreen запустит этот скрипт оболочки вместо вашей команды. Вероятно, вы захотите использовать полный путь для myprscr
.