首页 文章

使用execv时,Cygwin C文件返回“Bad Address”

提问于
浏览
0

我写了一个我想在Windows启动时执行的java程序 . 我写了一个批处理文件,在操作系统启动时运行,但我意识到它不起作用,因为Windows 7会在操作系统启动时停止运行任何批处理文件 .

为了解决这个问题,我想编写一个c程序,用cygwin编译它(这样它的.exe),然后在操作系统启动时运行它 . 我希望它执行命令:

java -jar ipsetup.jar

我无法让它工作,所以我试着让c程序执行“ls”命令 . 这是代码:

int main(int argc, char ** argv){

//argv[0] = "java";
//argv[1] = "-jar";
//argv[2] = "c:/windows/ipstartup.jar";

execv("/bin/ls", "/bin/ls");
printf("%s",strerror(errno));
return 1;

}

我一直收到错误“Bad Address”或“File or Directory不存在” . 谁知道为什么?

谢谢

**编辑

所以我可以让程序在cygwin中正确运行(它执行我的java文件) . 但是当我在Windows中运行它时,它只输出print语句 . 最初,它说cygwin1.dll丢失,所以我把它放在Windows目录中 . 这是我的源代码:

#include <errno.h>
#include <stdio.h>

int main(int argc,char ** argv){

//argv[0] = "java";
//argv[1] = "-jar";
//argv[2] = "c:/windows/ipstartup.jar";


system("java -jar c:/windows/ipstartup.jar");
printf("I am here");
return 1;

}

1 回答

  • 1

    我可以在这里看到两个潜在的错误来源,它们类似于批处理文件问题:cygwin和/或java可能无法在Windows启动时运行 .

    你为什么要把它变成cygwin程序?使用system()函数和常规ANSI C有什么问题吗?

相关问题