我有一个过去两周无法解决的问题。在我的学校,我们有一门课程,我们正在学习操作系统,并且被迫在 Ubuntu 中的 WSL 环境中工作。
其中一项任务是创建一个简单的程序,该程序读取和写入文件,然后用于接收信号(SIGINT、SIGTERM 等),但我遇到的问题是该程序在运行时立即崩溃。
当我简单地在 Windows 环境中编译并运行它时,它运行良好,但现在当我想使用 Ubuntu 主目录中的文件位置(以便我可以通过 Ubuntu 终端访问这些文件位置)时,它不起作用,启动后立即崩溃。
int main()
{
//main part of program
int broj;
FILE *fptr1;
FILE *fptr2;
fptr1=fopen("\\wsl.localhost\\Ubuntu\\home\\asevic\\lab1\\obrada.txt", "r+");
fptr2=fopen("\\wsl.localhost\\Ubuntu\\home\\asevic\\lab1\\status.txt", "r+");
int n =0;
if(fptr1 == NULL)
{
printf("Error!");
exit(1);
}
if(fptr2 == NULL)
{
printf("Error!");
exit(2);
}
while(fscanf( fptr2, "%d", &n ) == 1);
fclose(fptr2);
printf("Program s PID=%ld krenuo s radom\n", (long) getpid());
printf( "The last number in the file is: %d\n", n );
fptr2=fopen("\\wsl.localhost\\Ubuntu\\home\\asevic\\lab1\\status.txt", "r+");
int kv, counter=n+1;
int i;
for(i=n+1;i<1000;++i)
{
kv=i*i;
fprintf(fptr1,"%d\n",kv);
fprintf(fptr2,"%d\n",counter);
printf("Next square value: %d\n", kv);
counter++;
sleep(3);
}
printf("Program ends\n");
return 0;
}
^^这是我正在使用的代码,我相信问题出在文件路径中。但这些是 c 文件和要创建的 txt 文件所在的 Ubuntu 主目录的路径。
有人能解释一下这个问题吗?
问候, 阿德里安
就像我说的,该程序在 Windows 环境中可以运行,但当包含 Ubuntu 主目录文件路径时会失败。我也收到“错误!”尝试从 Ubuntu 终端运行时出现消息,表示未创建 tghat 文件。
\\\\wsl.localhost\\Ubuntu\\home\\asevic\\lab1\\status.txt"
这些是 Windows 文件路径,但您正在 WSL 中运行该程序。您的路径需要相对于
/
路线。另外,UNIX 路径使用正斜杠,而不是反斜杠。