我创建了一个程序,作为某些文件类型的默认调用。我“用…打开[任何文件]” - 创建了文件“test.txt”,但我的程序无法进行 I/O。为了能够与我的程序通信,我为我的可执行文件创建了一个“终端中的应用程序”启动器(快捷方式、标签、桌面图标)。现在我“用…打开[任何文件]” - 没有创建文件“test.txt”。为什么?
#include <stdio.h>
char pcPW[1000];
FILE *fp;
int main()
{
printf("Start.\n");
fp = fopen("/home/kkk/build-ert-Desktop-Debug/test.txt", "w+");
fprintf(fp, "Start.\n");
fclose(fp);
scanf("%s",pcPW);
printf("pcPW:%s\n",pcPW);
fp = fopen("/home/kkk/build-ert-Desktop-Debug/test.txt", "a+");
fprintf(fp, "pcPW: \n%s\n", pcPW);
fclose(fp);
return 0;
}
答案1
您可以添加自定义脚本来执行您想要的操作,但需要记住一些棘手的事情:
您的程序使用 C/C++ 编写。这意味着,程序必须先编译成二进制文件。根据程序是否使用任何特殊库,您可能需要从命令行执行此操作。
gcc
编译器默认创建a.out
文件,该文件可以从终端运行(即已设置可执行权限)。简单的编译可以编写脚本,但对于更复杂的编译,您需要从终端执行此操作。运行打印到终端的程序首先需要有一个终端。因此,您需要先生成终端窗口,然后运行该程序。
以下是完成这个工作的脚本:
#!/usr/bin/env python
from os import path
from sys import argv
from subprocess import call
for item in argv[1:]:
full_path = path.abspath('./' + item)
try:
call(['gcc',full_path])
call(['gnome-terminal','-e',
"bash -c './a.out;read'"])
except Exception as e:
将其另存为~/.local/share/nautilus/scripts/compile_and_run.py
,确保它具有可执行权限,然后测试。
如果一切顺利,您将看到以下内容:
答案2
我创建了一个程序,该程序调用另一个程序,该程序又调用另一个程序。第一行的关键内容是:
execl("/usr/bin/x-terminal-emulator", "/usr/bin/x-terminal-emulator",
"-e", "/home/kkk/build-untitled-Desktop-Debug/untitled",
"/home/kkk/Downloads/1.pdf", (char*) NULL);
谢谢 Serg,给了我很好的建议和 96% 的解决方案。