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

时间:2012-06-06 14:07:11

标签: java c exec

我写了一个我想在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”或“文件或目录不存在”。谁知道为什么?

由于

**修改

所以我可以让程序在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 个答案:

答案 0 :(得分:1)

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

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