2014-01-14 55 views
0

朋友。我正在使用Debian Linux(树莓派),我想在Linux启动后自动启动一个程序。它是一个C程序,它可以在终端和fprintf上打印一个文本文件,我已经编译并获得了exe文件(文件名是test)路径是/ home/username/try/test,程序可以成功运行,printf和fprintf可以工作。我的exe文件后,我运行命令在Linux中自动启动应用程序,输出失败

sudo chmod +x /home/usernane/try/test 

然后我/home/username/.config创建一个新的文件夹“自动”然后我运行命令

cd /home/username/.config/autostart 
sudo nano test.desktop 

我继续写桌面文件:

[Desktop Entry] 
Name=test 
exec=lxterminal -e "/home/username/try/test" 
Type=Application 

之后,我重新启动。程序可以自动启动,但是当程序启动到fprintf时,程序退出。我在代码中删除fprintf,重做一切,程序可以运行成功并可以打印结果。 所以问题是fprintf(我想输出结果到一个txt文件)!我尝试了很多方法,无法解决。我需要你的建议,谢谢!

我做fprintf中的以下内容:(一恢复正常运行(不自动启动程序),它可以工作。如果自动启动,应用程序将退出)

FILE *fp; 
char results[50] 

/* check if file could be opened */ 
if((fp=fopen("xy.txt", "w")) == NULL) { // or use "a" instead of "w" to create the file if it doesn't exist 
    printf("Cannot open file.\n"); 
    exit(1); 
} 
/* put your results into results[] */ 
.... 
/* afterwards writing to file */ 
fprintf(fp, "%s", results); 
fclose(fp); 
+0

我建议添加快速指导的代码。 – Jeyaram

+0

感谢您添加代码。建议:为“xy.txt”指定一个绝对路径,您知道的某个目录将始终存在,并始终可写。 – FoggyDay

+0

@FoggyDay你是对的。如果自动启动需要添加路径 – Henry

回答

0

您是否尝试过做这样的?:

FILE *fp; 
char results[50] 

/* check if file could be opened */ 
if((fp=fopen("test.txt", "w")) == NULL) { // or use "a" instead of "w" to create the file if it doesn't exist 
    printf("Cannot open file.\n"); 
    exit(1); 
} 
/* put your results into results[] */ 
.... 
/* afterwards writing to file */ 
fprintf(fp, "%s", results); 
fclose(fp); 
+0

是的,我是这样做的。如果我正常运行,它可以工作。但如果用linux自动启动,fprintf无法工作 – Henry